UNPKG

@antdv/pro-utils

Version:

@antdv/pro-utils

48 lines (47 loc) 1.47 kB
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 };