我有现有的ReactNative项目。
现在我尝试连接到一些本地库。我已经通过官方Native modules guide。
在我的代码中,我添加了包含以下代码的CalendarManager.h文件:
#import <Foundation/Foundation.h>
#import "RCTBridgeModule.h"
@interface CalendarManager : NSObject <RCTBridgeModule>
@end
我还有CalendarManager.m文件:
#import "CalendarManager.h"
@implementation CalendarManager
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(addEvent:(NSString *)name location:(NSString*)location)
{
//RCTLogInfo(@"Pretending to create an event %@ at %@", name, location);
}
@end
通过XCode将此文件添加到与AppDelegate.m文件相同的级别。
在我的javascript代码中,我这样做:
import React from 'react-native';
然后我称这个函数为:
var cmanager = React.CalendarManager;
cmanager.addEvent('Birthday Party', '4 Privet Drive, Surrey');
我能够构建项目,但是当我在Simulator中运行它时(包管理器启动后)我得到了令人讨厌的红色错误:
Cannot read property 'addEvent' of undefined.
在我看来,我错过了一些东西,但我不确定是什么?
答案 0 :(得分:4)
您需要使用NativeModules
来覆盖自定义原生组件。
试试这个:
import { NativeModules } from 'react-native';
var CalendarManager = NativeModules.CalendarManager;
CalendarManager.addEvent('Birthday Party', '4 Privet Drive, Surrey');