TelegramPWA/src/hooks/useSyncEffectWithPrevDeps.ts
2024-09-06 15:43:12 +02:00

20 lines
546 B
TypeScript

import { useRef } from '../lib/teact/teact';
import useSyncEffect from './useSyncEffect';
const useLayoutEffectWithPrevDeps = <const T extends readonly any[]>(
cb: (args: T | readonly []) => void, dependencies: T,
) => {
const prevDepsRef = useRef<T>();
return useSyncEffect(() => {
const prevDeps = prevDepsRef.current;
prevDepsRef.current = dependencies;
return cb(prevDeps || []);
// eslint-disable-next-line react-hooks-static-deps/exhaustive-deps
}, dependencies);
};
export default useLayoutEffectWithPrevDeps;