UNPKG

@slan-health/taro-vueuse

Version:

taro vue版本hooks

50 lines (49 loc) 1.41 kB
import Taro from "@tarojs/taro"; import { onMounted, onUnmounted } from "vue"; const safeNamespace = ["__taro", "at"]; function wrapperEvent(namespace, eventName) { return namespace ? `${namespace}.${eventName}` : eventName; } const createEventCenter = () => Taro.eventCenter; function useEvent(namespace) { const events = createEventCenter(); const emitEvent = (eventName, ...params) => { if (!eventName) { console.warn("eventName not provide"); return; } const realEventName = wrapperEvent(namespace, eventName); events.trigger(realEventName, params); }; const setListener = (eventName, ...handlers) => { if (!eventName || safeNamespace.some((v) => eventName.startsWith(v))) { console.warn("eventName not valid. listen failed"); } else if (!handlers.length) { console.warn("you mast provide one handler to listen. add failed"); } else { const realEventName = wrapperEvent(namespace, eventName); onMounted(() => { handlers.forEach((handler) => { events.on(realEventName, handler); }); }); onUnmounted(() => { events.off(realEventName); }); } }; const removeAllListener = () => { events.off(); }; return { emitEvent, setListener, removeAllListener }; } export { useEvent as default, safeNamespace, wrapperEvent }; //# sourceMappingURL=index.js.map