npmchenwei111
Version:
test1111
57 lines (48 loc) • 1.26 kB
JavaScript
/**
* 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