import { useEffect, useRef } from "react"; export type UseDebounceFn = (...args: T[]) => void; function useDebounce( debounceFn: UseDebounceFn, time = 200 ): UseDebounceFn { const timer = useRef(null); useEffect(() => () => clearTimeout(timer.current), []); return (...args: T[]) => { if (timer.current) { clearTimeout(timer.current); } timer.current = setTimeout(() => debounceFn(...args), time); }; } export default useDebounce;