我正在 iOS 应用程序中执行异步操作。它是由javascript触发的。完成后(在应用程序中的某个位置),我想让 javascript 知道。
我目前的解决方案是继承自RCTEventEmitter
的原生模块,方法如下:
@interface MyEventEmitter : RCTEventEmitter
// ...
end
@implementation
- (void)giveSomethingToJSNSString *)something {
[self sendEventWithName"SOME_NAME" body:something];
}
@end
然后,当我的异步工作完成后,我调用这个方法:
MyEventEmitter *emitter = [[MyEventEmitter alloc] init];
[emitter giveSomethingToJS{}];
很明显,emitter.bridge
为 nil,应用程序因断言 bridge != nil
而崩溃。那么我应该如何获得桥梁并让 *emitter
(实例)知道。或者我怎样才能在初始化桥接的情况下获得正确的实例?
提前致谢!
问题在于,在 React-Native iOS SDK 中,RCTEventEmitter
子类不应由您初始化。 React-Native SDK 实际上处理你的 RCTEventEmitters 的初始化。
正如 Arthur 指出的,使用 NSNotificationCenter
与您的 RCTEventEmitter
进行通信是一个很好的策略。如果您需要指向这些事件发射器的指针,您还可以创建一个自定义单例类并在初始化时向其注册 RCTEventEmitter。
关于javascript - 如何在 React Native 中将事件从 iOS 发送到 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38470897/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |