Neural-MRI / frontend /src /hooks /useDebounce.ts
Hiconcep's picture
Upload folder using huggingface_hub
0ce9643 verified
import { useRef, useCallback } from 'react';
export function useDebounce<T extends (...args: never[]) => void>(
fn: T,
delay: number,
): (...args: Parameters<T>) => void {
const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
return useCallback(
(...args: Parameters<T>) => {
if (timerRef.current) clearTimeout(timerRef.current);
timerRef.current = setTimeout(() => fn(...args), delay);
},
[fn, delay],
);
}