天才小*_*小飞猫 4 javascript react-native
将 react-native 代码从 0.28 更新到 0.30 后,子类化RCTEventEmitter
是将事件发送回 Javascript 的推荐方式,旧方式已弃用。
- (void)startObserving{}
- (void)stopObserving{}
- (NSArray<NSString *> *)supportedEvents{
return @[@"someInterestingEvent"];
}
-(void)interestingEventHappen{
[self sendEventWithName:@"someInterestingEvent" body:nil];
}
Run Code Online (Sandbox Code Playgroud)
问题是我如何接收回调而不是仅仅注册事件。我注意到公开了RCTEventEmitter
方法RCT_EXPORT_METHOD(addListener:(NSString *)eventName)
,但它只接收一个参数(事件名称)。我试过文档:
NativeAppEventEmitter.addListener('someInterestingEvent', ()=>{});
没有结果,黄色框抱怨发送 someInterestingEvent
在没有注册听众的情况下。
我错过了什么?
这个问题已经在github上讨论过了。
简而言之,您必须使用NativeModules
模块来获取此本机模块并将其包装在NativeEventEmitter
类中,以便您可以接收事件。
import { NativeModules, NativeEventEmitter } from 'react-native'
const myModuleEvt = new NativeEventEmitter(NativeModules.MyModule)
myModuleEvt.addListener('sayHello', (data) => console.log(data))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6944 次 |
最近记录: |