taro-hooks
Version:
为 Taro 而设计的 Hooks Library
62 lines • 2.24 kB
JavaScript
import { eventCenter } from '@tarojs/taro';
import { generateGeneralFail } from '../utils/tool';
import { isSafeEvent, prefixClsEvent, generateCheck } from './utils';
function useEvent(namespace) {
var set = function set(eventName) {
for (var _len = arguments.length, handlers = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
handlers[_key - 1] = arguments[_key];
}
if (generateCheck(eventName, handlers)) {
handlers.forEach(function (handler) {
eventCenter.on(prefixClsEvent(namespace, eventName), handler);
});
}
};
var setOnce = function setOnce(eventName) {
for (var _len2 = arguments.length, handlers = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
handlers[_key2 - 1] = arguments[_key2];
}
if (generateCheck(eventName, handlers)) {
handlers.forEach(function (handler) {
eventCenter.once(prefixClsEvent(namespace, eventName), handler);
});
}
};
var off = function off(eventName) {
if (!isSafeEvent(eventName)) {
generateGeneralFail('EVENT CHANEL', eventName + " is not valid");
return;
}
for (var _len3 = arguments.length, handlers = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
handlers[_key3 - 1] = arguments[_key3];
}
if (!(handlers != null && handlers.length)) {
eventCenter.off(prefixClsEvent(namespace, eventName));
} else {
handlers.forEach(function (handler) {
eventCenter.off(prefixClsEvent(namespace, eventName), handler);
});
}
};
var clear = function clear() {
eventCenter.off();
};
var trigger = function trigger(eventName) {
if (!isSafeEvent(eventName)) {
generateGeneralFail('EVENT CHANEL', eventName + " is not valid");
return;
}
for (var _len4 = arguments.length, params = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
params[_key4 - 1] = arguments[_key4];
}
eventCenter.trigger.apply(eventCenter, [prefixClsEvent(namespace, eventName)].concat(params));
};
return {
set: set,
setOnce: setOnce,
off: off,
clear: clear,
trigger: trigger
};
}
export default useEvent;