ReactNative - 无法从本机模块调用函数

时间:2016-03-17 15:36:05

标签: javascript ios objective-c react-native

我有现有的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. 

在我看来,我错过了一些东西,但我不确定是什么?

1 个答案:

答案 0 :(得分:4)

您需要使用NativeModules来覆盖自定义原生组件。

试试这个:

import { NativeModules } from 'react-native';
var CalendarManager = NativeModules.CalendarManager;
CalendarManager.addEvent('Birthday Party', '4 Privet Drive, Surrey');