将反应原生代码从0.28更新为0.30后,将RCTEventEmitter
子类化为将事件发送回Javascript的推荐方法,旧方法已弃用。
- (void)startObserving{}
- (void)stopObserving{}
- (NSArray<NSString *> *)supportedEvents{
return @[@"someInterestingEvent"];
}
-(void)interestingEventHappen{
[self sendEventWithName:@"someInterestingEvent" body:nil];
}
问题是如何收到回调而不仅仅是注册事件。我注意到RCTEventEmitter
暴露了方法RCT_EXPORT_METHOD(addListener:(NSString *)eventName)
,但它只接收一个参数(事件名称)。我试过这个文件:
NativeAppEventEmitter.addListener('someInterestingEvent', ()=>{});
没有结果,黄色框抱怨发送someInterestingEvent
没有注册听众。
我错过了什么吗?
答案 0 :(得分:1)
question已在github上讨论过。
简而言之,您必须使用NativeModules
模块来获取此本机模块并将其包装在NativeEventEmitter
类中,以便您可以接收事件。
import { NativeModules, NativeEventEmitter } from 'react-native'
const myModuleEvt = new NativeEventEmitter(NativeModules.MyModule)
myModuleEvt.addListener('sayHello', (data) => console.log(data))