project-nomad/admin/inertia/hooks/useDebounce.ts
2025-12-02 08:25:09 -08:00

24 lines
511 B
TypeScript

import { useRef, useEffect } from "react";
const useDebounce = () => {
const timeout = useRef<number | undefined>(400);
const debounce =
(func: Function, wait: number = 0) =>
(...args: any[]) => {
clearTimeout(timeout.current);
timeout.current = window.setTimeout(() => func(...args), wait);
};
useEffect(() => {
return () => {
if (!timeout.current) return;
clearTimeout(timeout.current);
};
}, []);
return { debounce };
};
export default useDebounce;