Javascript 自定义反应本机UI组件:不变冲突

Javascript 自定义反应本机UI组件:不变冲突,javascript,ios,objective-c,google-maps,react-native,Javascript,Ios,Objective C,Google Maps,React Native,我根据文档构建了一个定制的React本机UI组件。这个想法是,它将是谷歌地图iOS API的一个实现,但现在它只是为了显示一个标准的苹果地图 我使用命令react native new library googlemappview构建了一个新模块。这将所有模块文件添加到/Libraries/GoogleMapView/ 我有一个名为GoogleMapViewManager.h的文件,其中包含: #import "RCTViewManager.h" @interface GoogleMapMan

我根据文档构建了一个定制的React本机UI组件。这个想法是,它将是谷歌地图iOS API的一个实现,但现在它只是为了显示一个标准的苹果地图

我使用命令
react native new library googlemappview
构建了一个新模块。这将所有模块文件添加到
/Libraries/GoogleMapView/

我有一个名为
GoogleMapViewManager.h
的文件,其中包含:

#import "RCTViewManager.h"

@interface GoogleMapManager : RCTViewManager

@end
#import <MapKit/MapKit.h>
#import "GoogleMapManager.h"

@implementation GoogleMapManager

RCT_EXPORT_MODULE()

- (UIView *)view
{
    return [[MKMapView alloc] init];
}

@end
'use strict';

var React = require('react-native');
var { requireNativeComponent } = React;

class GoogleMapView extends React.Component {
    render() {
        return <GoogleMap {...this.props} />;
    }
}

GoogleMapView.propTypes = {
    //
};

var GoogleMap = requireNativeComponent('GoogleMap', GoogleMapView);

module.exports = GoogleMapView;
GoogleMapManager.m
文件包含:

#import "RCTViewManager.h"

@interface GoogleMapManager : RCTViewManager

@end
#import <MapKit/MapKit.h>
#import "GoogleMapManager.h"

@implementation GoogleMapManager

RCT_EXPORT_MODULE()

- (UIView *)view
{
    return [[MKMapView alloc] init];
}

@end
'use strict';

var React = require('react-native');
var { requireNativeComponent } = React;

class GoogleMapView extends React.Component {
    render() {
        return <GoogleMap {...this.props} />;
    }
}

GoogleMapView.propTypes = {
    //
};

var GoogleMap = requireNativeComponent('GoogleMap', GoogleMapView);

module.exports = GoogleMapView;
同样,这或多或少是从文档中提取出来的,所以我希望它能工作,除非我在某个地方犯了错误

当我尝试使用此模块执行任何操作时,如将其包含在文件中,如下所示:

var React = require('react-native'), {Component, View, StyleSheet, GoogleMap} = React;
然后在JSX视图中使用它,有点像这样(这是来自我的Map.js组件):


有没有什么我搞砸了,因为我没能解决这个问题?

JavaScript要求不正确,我需要使用:

var GoogleMap = require('../Libraries/GoogleMapView/GoogleMapView.js');
与其尝试将其与React捆绑在一起,还需要:

var React = require('react-native'), {Component, View, StyleSheet, GoogleMap} = React;

接得好,但为什么呢?对于React catch all中的内容以及作为单独的
require
行的内容,是否有一个规则?嗯。这是我的问题。谢谢@zipzit afaik,React生产线用于React自己的组件,需要第三方组件。