UNPKG

npmchenwei111

Version:

test1111

57 lines (48 loc) 1.26 kB
/** * Created by chenwei on 2017/7/15. */ import React from 'react' import { DeviceEventEmitter } from 'react-native' class EventEmitterManager { emitterMap = {} /** * 获取screen的广播接收器 * @param screen * @returns {EventEmitterManager|undefined|*} */ static get (screen) { EventEmitterManager.lose(screen) if (!screen.hasEventEmitter) { screen.hasEventEmitter = new EventEmitterManager() } return screen.hasEventEmitter } /** * 释放screen内的广播接收器 * @param screen */ static lose (screen) { if (screen.hasEventEmitter && typeof screen.hasEventEmitter.removeAllEventEmitter === 'function') { screen.hasEventEmitter.removeAllEventEmitter() screen.hasEventEmitter = undefined } } addEventEmitter (name, event) { if (this.emitterMap[name]) { this.emitterMap[name].remove() } this.emitterMap[name] = DeviceEventEmitter.addListener(name, event) return this } removeAllEventEmitter () { if (this.emitterMap) { for (let key in this.emitterMap) { if (this.emitterMap[key]) { this.emitterMap[key].remove() } } this.emitterMap = {} } } } export default EventEmitterManager