相当于React Native的NSNotificationCenter?

pow*_*ers 6 react-native

一直在搜索是否有任何内置或任何第三方模块,用于将NSNotificationCenter样式功能添加到react-native应用程序.

具体来说,我希望模块"监听"某些通知类型,我将能够从应用程序的其他部分(从javascript内)"广播"事件.

我发现最接近的是3天前的这个:https://stackoverflow.com/a/32004456/798533,但它只支持发送NSNotificationCenter事件,而不是监听.

pow*_*ers 11

好的,我找到了一个可以接受的解决方案.这是我最终做的事情,如果有人有同样的问题:

我安装了npm包backbone-events-standalone,它只是Backbone.js提取的事件代码.

在我的app(index.ios.js)的主要入口点,我通过导入包含以下代码:

var BackboneEvents = require('backbone-events-standalone');
// global event bus
window.EventBus = BackboneEvents.mixin({});
Run Code Online (Sandbox Code Playgroud)

在任何组件内部componentDidMount,您现在可以添加事件侦听器,如下所示:

componentDidMount() {
  window.EventBus.on('yourEventName', this.yourEventHandlerFunc);
}
Run Code Online (Sandbox Code Playgroud)

你可以这样发射事件:

window.EventBus.trigger('yourEventName', 'optional event info');
Run Code Online (Sandbox Code Playgroud)

这也可以很容易地与NSNotificationCenter事件结合使用类似原始问题中链接的解决方案.

如果你要删除组件,那么删除事件监听器也是明智之举,但我会把它留作读者练习.