在开发中往往会遇到兄弟页面的操作会影响其他页面的数据
并且这个页面有很多请求,不可能每次回到这个页面就要把所有接口重新请求
这时候就要使用事件监听器-DeviceEventEmitter
DeviceEventEmitter
这个组件没有官方api,以下内容都是在编译过后的源码得来的。
1.addListener 发起监听
语法 addListener( eventType: string, listener: (...args: any[]) => any, context?: any)
项目中使用:
this.subscription = DeviceEventEmitter.addListener('UserEnvChangedNoti', fetchData)
// 可以把特定的函数放到监听器里面,哪里有需要哪里使用emit调用,
2.emit 事件触发
语法 emit(eventType: string, ...params?: any[]): void;
项目中使用
DeviceEventEmitter.emit('UserEnvChangedNoti')
// 触发监听事件的时候调用可以传参数
3.removeSubscription 移除特定监听
这个使用就相当于remove()
的使用
例如 上面的监听 可以直接 this.subscription.remove()
语法 removeSubscription(subscription: EmitterSubscription)
例子 DeviceEventEmitter.removeSubscription(this.subscription)
4.removeAllListeners 移除所有监听
语法 removeAllListeners(eventType?: string)
例子 DeviceEventEmitter.removeAllListeners()
5.removeCurrentListener 移除当前监听
要在当前事件的生命周期内调用反之它会抛出
语法 removeCurrentListener()
例子
const subscription = emitter.addListenerMap({
someEvent: function(data, event) {
console.log(data);
emitter.removeCurrentListener();
}
});
emitter.emit('someEvent', 'abc'); // logs 'abc'
emitter.emit('someEvent', 'def'); // does not log anything
6.removeListener 移除指定事件的监听
语法 removeListener( eventType: string, listener: (...args: any[]) => any)
例子 DeviceEventEmitter.removeListener('UserEnvChangedNoti',fetchData)
7.once 一次性监听
语法 once(eventType: string, listener: (...args: any[]) => any, context: any)
例子 DeviceEventEmitter.once('UserEnvChangedNoti', fetchData)
8.listeners 返回一个当前事件
语法 listeners(eventType: string)
例子 DeviceEventEmitter.listeners('UserEnvChangedNoti')
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。