javascript - 如何在 React Native 中将事件从 iOS 发送到 javascript

标签 javascript ios objective-c react-native

我正在 iOS 应用程序中执行异步操作。它由 javascript 触发。完成后(在应用程序中的某个地方分开),我想让 javascript 知道。 我目前的解决方案是继承自 RCTEventEmitter 的原生模块,它有以下方法:

@interface MyEventEmitter : RCTEventEmitter
// ...
end
@implementation
- (void)giveSomethingToJS:(NSString *)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 实际上会处理 RCTEventEmitter 的初始化。

正如 Arthur 指出的那样,使用 NSNotificationCenter 与您的 RCTEventEmitter 进行通信是一个很好的策略。如果您需要指向这些事件发射器的指针,您还可以创建自定义单例类并在初始化时向其注册 RCTEventEmitter。

关于javascript - 如何在 React Native 中将事件从 iOS 发送到 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38470897/

相关文章:

objective-c - 退出全屏模式后如何接收 NSView 的键盘事件?

ios nsarray/nsmutablearray 对自定义对象进行分组/求和

ios - 由嵌入在 UITabBarController 中的 UINavigationController 呈现的 View 不会调整 View 大小以考虑 View 底部的 tabBar

javascript - 哪个 javascript 包提供了丰富的对象模型,用于在 HTML5 Canvas 上绘制不同的形状

javascript - ExpressJS 和 Angular - 'leaving' 用于进行服务器端身份验证的应用程序

iOS 围绕 anchor 旋转 View 并跟随触摸

iphone - 大型 UICollectionViewCell 随自定义布局消失

javascript - 无法从 Javascript 访问隐藏的 HTML 元素

javascript - react-native-google-places-autocomplete 给它一个值而不仅仅是默认(初始)值

ios - 如何检测字典是否为空或为 null