等效于 React Native 的 NSNotificationCenter?
Equivalent of NSNotificationCenter for React Native?
一直在搜索一段时间,看看是否有任何内置模块或任何第 3 方模块可将 NSNotificationCenter 样式功能添加到 react-native 应用程序。
具体来说,我希望某些通知类型的模块 "listen",并且我将能够 "broadcast" 来自应用程序其他部分的事件(来自 javascript)。
我发现的最接近的是 3 天前的这个:,但它只支持发送 NSNotificationCenter 事件,不支持监听。
好的,我想出了一个可以接受的解决方案。如果有人有同样的问题,我最终会这样做:
我安装了 npm 包 backbone-events-standalone,它只是从 Backbone.js.
中提取的事件代码
在我的应用程序的主入口点 (index.ios.js
),我通过导入包含了以下代码:
var BackboneEvents = require('backbone-events-standalone');
// global event bus
window.EventBus = BackboneEvents.mixin({});
在任何组件的 componentDidMount
中,您现在可以添加事件侦听器,如下所示:
componentDidMount() {
window.EventBus.on('yourEventName', this.yourEventHandlerFunc);
}
你可以这样触发事件:
window.EventBus.trigger('yourEventName', 'optional event info');
这也可以很容易地与 NSNotificationCenter 事件结合使用,例如原始问题中链接的解决方案。
如果要删除组件,最好也删除事件侦听器,但我会将其留作 reader.
的练习。
一直在搜索一段时间,看看是否有任何内置模块或任何第 3 方模块可将 NSNotificationCenter 样式功能添加到 react-native 应用程序。
具体来说,我希望某些通知类型的模块 "listen",并且我将能够 "broadcast" 来自应用程序其他部分的事件(来自 javascript)。
我发现的最接近的是 3 天前的这个:
好的,我想出了一个可以接受的解决方案。如果有人有同样的问题,我最终会这样做:
我安装了 npm 包 backbone-events-standalone,它只是从 Backbone.js.
中提取的事件代码在我的应用程序的主入口点 (index.ios.js
),我通过导入包含了以下代码:
var BackboneEvents = require('backbone-events-standalone');
// global event bus
window.EventBus = BackboneEvents.mixin({});
在任何组件的 componentDidMount
中,您现在可以添加事件侦听器,如下所示:
componentDidMount() {
window.EventBus.on('yourEventName', this.yourEventHandlerFunc);
}
你可以这样触发事件:
window.EventBus.trigger('yourEventName', 'optional event info');
这也可以很容易地与 NSNotificationCenter 事件结合使用,例如原始问题中链接的解决方案。
如果要删除组件,最好也删除事件侦听器,但我会将其留作 reader.
的练习。