Refresh在没有注册侦听器的情况下发送。
@objc(MyModule)
class MyModule: RCTEventEmitter {
override func supportedEvents() -> [String]! {
return ["Refresh"]
}
}
Run Code Online (Sandbox Code Playgroud)
从“反应原生”导入 { NativeModules, NativeEventEmitter }
const myModuleEvt = new NativeEventEmitter(NativeModules.MyModule)
myModuleEvt.addListener("Refresh", (xyz) => console.log("hey"))
Run Code Online (Sandbox Code Playgroud)
似乎我已经按照文档做了所有的事情,但我仍然遇到这个问题。
小智 1
自从有人问这个问题以来已经很长时间了,遗憾的是没有答案,因为这也可以帮助我。我遇到了完全相同的问题,并且发布的答案都没有解决我的问题。最后做的是在我的类的 init 方法中调用 [super initWithDisabledObservation] 而不仅仅是 [super init]。
我查看了 RCTEventEmitter.m 源代码。问题的根源在于:
BOOL shouldEmitEvent = (_observationDisabled || _listenerCount > 0);
在我的例子中,当我的 JS 代码添加事件侦听器时,_listenerCount 似乎从未更新。因为 sendEventWithName 甚至从未调用相关代码来将事件发送回 JavaScript,而只是给了我这个警告。但是当调用 [super initWithDisabledObservation] 时,_observationDisabled 设置为 true,因此 sendEventWithName 会忽略侦听器计数并始终执行其应该执行的操作。
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |