@antdv/pro-utils
Version:
@antdv/pro-utils
48 lines (47 loc) • 1.47 kB
JavaScript
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
import { ref } from "vue";
import { isDeepEqual } from "../../isDeepEqual/index.mjs";
import { useDebounceFn } from "../useDebounceFn/index.mjs";
import { useEffect } from "../useEffect/index.mjs";
function useDeepCompareMemoize(value, ignoreKeys) {
const deepRef = ref();
if (!isDeepEqual(value, deepRef.value, ignoreKeys)) {
deepRef.value = value;
}
return deepRef.value;
}
function useDeepCompareEffect(effect, dependencies, ignoreKeys) {
useEffect(effect, useDeepCompareMemoize(dependencies || [], ignoreKeys));
}
function useDeepCompareEffectDebounce(effect, dependencies, ignoreKeys, waitTime) {
const effectDn = useDebounceFn(() => __async(this, null, function* () {
effect();
}), waitTime || 16);
useEffect(() => {
effectDn.run();
}, useDeepCompareMemoize(dependencies || [], ignoreKeys));
}
export {
useDeepCompareEffect,
useDeepCompareEffectDebounce,
useDeepCompareMemoize
};