如何在React-native中使用回调?

时间:2017-06-15 08:12:24

标签: objective-c react-native callback react-native-ios

我试图关注Facebook的文档,但不幸的是他们没有解释如何使用以及在何处使用。 我想为回调工作做一个示例示例

https://facebook.github.io/react-native/docs/native-modules-ios.html

我在文档中做了,目前面临一个问题:" this.setState不是函数。 (在this.setState({events:events})中,this.setState未定义"。

如果有人能帮助我,我将不胜感激。

Edit:

我设法解决了this.setState问题,但我现在的主要问题是如何使这些回调起作用?

这是文件CalendarManager

下的Objective-C中的代码
RCT_EXPORT_METHOD(findEvents:(RCTResponseSenderBlock)callback) {
  NSArray *events;
  events = [NSArray arrayWithObjects:  @"foo", @"bar", nil];
  callback(@[[NSNull null], events]);
}

js中的代码位于文件index.ios.js

var CalendarManager = NativeModules.CalendarManager;
CalendarManager.addEvent('Birthday Party', '4 Privet Drive, Surrey');
CalendarManager.findEvents((error, events) => {
  if (error) {
    console.error(error);
  } else {
    console.log('Call back works!');
  }
});

Edit 2

我设法让回调从objective-c工作到js,现在如何从js到objective-c进行回调?

1 个答案:

答案 0 :(得分:0)

Objective-C方法

RCT_EXTERN_METHOD(getString:(NSString *)str) {
  NSLog(@"Your String", str) 
}

在JS中,你可以在你想要的任何地方调用它:



yourNativeModule.getString("yourstring")