antui-mobile
Version:
mobile ui for antd
60 lines (54 loc) • 1.82 kB
JavaScript
import EventEmitter from 'wolfy87-eventemitter';
import {isFunction, isArray} from '../../utils/check';
export const eventEmitter = new EventEmitter();
export default eventEmitter;
/**
* 注册事件监听
* @param eventName{string} 事件名称
* @param callbacks{array|function} 事件触发时调用的函数,
* 支持数组传入多个函数。一般上willmount时进行注册,
* 在didMount时调用off进行解除注册。
*/
export const on = (eventName, callbacks) => {
if (isFunction(callbacks)) {
eventEmitter.addListener(eventName, callbacks);
} else if (isArray(callbacks)) {
eventEmitter.addListeners(eventName, callbacks);
} else {
console.error("类型错误: ", callbacks);
}
};
/**
* 注册一次事件监听,只能触发一次trigger触发后即自动从监听中移除
* @param eventName{string} 事件名称
* @param callback{function} 事件触发时调用的函数
*/
export const once = (eventName, callback) => {
if (isFunction(callback)) {
eventEmitter.addOnceListener(eventName, callback);
} else {
console.error("类型错误: ", callback);
}
};
/**
* 移除事件监听
* @param eventName{string} 事件名称
* @param callbacks{array|function} 事件名称对应的函数
*/
export const off = (eventName, callbacks) => {
if (isFunction(callbacks)) {
eventEmitter.removeListener(eventName, callbacks);
} else if (isArray(callbacks)) {
eventEmitter.removeListeners(eventName, callbacks);
} else {
console.error("类型错误: ", callbacks);
}
};
/**
* 触发事件
* @param eventName{string} 事件名称
* @param args{obj} 需要传递的参数
*/
export const trigger = (eventName, ...args) => {
eventEmitter.emitEvent(eventName, args);
};