2016-07-23 105 views
2

將反應本機代碼從0.28更新爲0.30後,將事件發回Javascript的推薦方法爲RCTEventEmitter,舊方法已棄用。如何使用反應本機中的RCTEventEmitter接收事件回調

- (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',()=>{});

沒有結果,黃色盒子complaines發送someInterestingEvent沒有註冊偵聽器。

我錯過了什麼嗎?

回答

1

已在github上討論過question

總之,您必須使用NativeModules模塊來獲取此本機模塊並將其包裝在NativeEventEmitter類中,以便您可以接收事件。

import { NativeModules, NativeEventEmitter } from 'react-native' 

const myModuleEvt = new NativeEventEmitter(NativeModules.MyModule) 
myModuleEvt.addListener('sayHello', (data) => console.log(data)) 
相關問題