import { useCallback, useEffect, useRef } from 'react'; export function usePreservedCallback any>(callback: Callback) { const callbackRef = useRef(callback); useEffect(() => { callbackRef.current = callback; }, [callback]); return useCallback( (...args: any[]) => { return callbackRef.current(...args); }, [callbackRef] ) as Callback; }