/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable react-hooks/rules-of-hooks */ /* eslint-disable react-hooks/exhaustive-deps */ import { useEffect, useMemo, useRef } from "react"; import { isEqual } from "@reins/utils"; const memo = (value: any) => { const ref = useRef(value); const changed = useRef(0); if (!isEqual(value, ref.current)) { ref.current = value; changed.current += 1; } return useMemo(() => ref.current, [changed.current]); }; /** * * @kind 09-Performance */ export const useDeepEffect = (callback: VoidFunction | (() => VoidFunction), dependencies: any[]) => { return useEffect(callback, memo(dependencies)); };