在开发中往往会遇到兄弟页面的操作会影响其他页面的数据
并且这个页面有很多请求,不可能每次回到这个页面就要把所有接口重新请求
这时候就要使用事件监听器-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')


wyd_4219
1 声望0 粉丝