@jk-core/utils
Version:
utils for jk
17 lines (13 loc) • 511 B
text/typescript
import { useCallback, useRef } from 'react';
/* eslint-disable @typescript-eslint/no-explicit-any */
type Procedure = (...args: any[]) => void;
const useDebounce = (func: Procedure, delay: number): Procedure => {
const timeoutId = useRef<ReturnType<typeof setTimeout>>();
return useCallback((...args: any[]) => {
if (timeoutId.current) clearTimeout(timeoutId.current);
timeoutId.current = setTimeout(() => {
func(...args);
}, delay);
}, [func, delay]);
};
export default useDebounce;