chooks
Version:
基于 [`@vue/composition-api`](https://github.com/vuejs/composition-api) 的vue hooks函数
42 lines (35 loc) • 1.09 kB
JavaScript
const handlers = {}
export function useEmitter() {
const on = function (eventType, handler) {
if (!handlers[eventType]) handlers[eventType] = []
handlers[eventType].push(handler)
}
const once = function (eventType, handler) {
handler.once = true
on(eventType, handler)
}
const off = function (eventType, handler) {
if(!handlers[eventType]) return
handlers[eventType].forEach((item, index) => {
if (item === handler) handlers[eventType].splice(index, 1)
})
}
const emit = function (eventType, data) {
if(!handlers[eventType]) return
handlers[eventType].forEach(handler => {
handler(data)
if (handler.once === true) off(eventType, handler)
})
}
const isSubed = function(eventType, handler){
if(!handlers[eventType]) return false
return handlers[eventType].indexOf(handler) > -1
}
return {
on,
once,
emit,
off,
isSubed
}
}