如何在react-native中使用RCTEventEmitter接收事件回调

时间:2016-07-23 05:16:27

标签: javascript react-native

将反应原生代码从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没有注册听众。

我错过了什么吗?

1 个答案:

答案 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))