UNPKG

@vue-widget/hooks

Version:

hooks from react to vue

33 lines (32 loc) 1.38 kB
import { onBeforeUnmount, onMounted, unref, watch } from "vue"; import { getTargetElement } from "./domTarget"; import { getArray } from "./getArray"; var createEffectWithTarget = function (type) { /** * * @param effect * @param deps * @param target target should compare ref.current vs ref.current, dom vs dom, ()=>dom vs ()=>dom */ var useEffectWithTarget = function (effect, deps, target) { var unLoadRef; watch([function () { return deps === null || deps === void 0 ? void 0 : deps.map(unref); }, function () { return unref(target); }], function () { var targets = getArray(target); var els = targets.map(function (item) { return getTargetElement(item); }); unLoadRef === null || unLoadRef === void 0 ? void 0 : unLoadRef(); unLoadRef = effect(); }, { flush: "sync", deep: true }); onMounted(function () { return setTimeout(function () { var targets = getArray(target); var els = targets.map(function (item) { return getTargetElement(item); }); unLoadRef = effect(); }); }); onBeforeUnmount(function () { unLoadRef === null || unLoadRef === void 0 ? void 0 : unLoadRef(); }); }; return useEffectWithTarget; }; export default createEffectWithTarget;