我不能为我的生活得到一个事件,从iOS本机跨桥到适当的原生JS上下文正确发送.在Objective-C方面,我希望有一个模块可以轻松地在整个桥上发送事件.我已经调用了这个类EventEmitter,它的定义如下:
// EventEmitter.h
#import "RCTBridge.h"
#import "RCTEventDispatcher.h"
@interface EventEmitter : NSObject<RCTBridgeModule>
- (void)emitEvent:(NSString *) eventName withData:(id) eventData;
@end
Run Code Online (Sandbox Code Playgroud)
和实施:
// EventEmitter.m
#import "EventEmitter.h"
@implementation EventEmitter
RCT_EXPORT_MODULE();
@synthesize bridge = _bridge;
- (void)emitEvent:(NSString *) eventName withData:(id) eventData
{
NSLog( @"emitting %@ with data %@", eventName, [eventData description] );
[[_bridge eventDispatcher] sendDeviceEventWithName:eventName body:eventData];
[[_bridge eventDispatcher] sendAppEventWithName:eventName body:eventData];
}
@end
Run Code Online (Sandbox Code Playgroud)
我正在使用sendDeviceEvent和sendAppEvent,因为我无法工作.
对事物的JS一边,我在注册我的模块之一(这样我才知道是发出该事件之前会发生的事件订阅)的全局命名空间来接收这些事件.我这样注册:
console.log( 'ADDING EVENT LISTENERS' );
NativeAppEventEmitter.addListener( 'blah', test => console.log( 'TEST1', test ) );
DeviceEventEmitter.addListener( 'blah', test => console.log( 'TEST2', test …Run Code Online (Sandbox Code Playgroud)