如何在 React-native 中使用回调?
How to use Callbacks in React-native?
我试图遵循 Facebook 的文档,但不幸的是他们没有解释如何使用以及在哪里使用。
我想为回调工作做一个示例
https://facebook.github.io/react-native/docs/native-modules-ios.html
我按照文档中的说明操作,目前遇到一个问题:"this.setState is not a function. (In this.setState({events: events}), this.setState is undefined"。
如果有人能帮助我,我将不胜感激。
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?
一个Objective-C方法
RCT_EXTERN_METHOD(getString:(NSString *)str) {
NSLog(@"Your String", str)
}
在 JS 中,你可以在任何地方调用它,比如:
yourNativeModule.getString("yourstring")
我试图遵循 Facebook 的文档,但不幸的是他们没有解释如何使用以及在哪里使用。 我想为回调工作做一个示例
https://facebook.github.io/react-native/docs/native-modules-ios.html
我按照文档中的说明操作,目前遇到一个问题:"this.setState is not a function. (In this.setState({events: events}), this.setState is undefined"。
如果有人能帮助我,我将不胜感激。
Edit:
我设法解决了 this.setState 问题,但我现在的主要问题是如何使这些回调起作用?
这是文件 CalendarManager
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?
一个Objective-C方法
RCT_EXTERN_METHOD(getString:(NSString *)str) {
NSLog(@"Your String", str)
}
在 JS 中,你可以在任何地方调用它,比如:
yourNativeModule.getString("yourstring")