memorium/lib/hooks/useDebouncedCallback.ts

25 lines
539 B
TypeScript

// useDebouncedCallback.tsx
import { useEffect, useState } from "preact/hooks";
const useDebouncedCallback = (
callback: (...args: any[]) => void,
delay: number,
) => {
const [debouncedCallback, setDebouncedCallback] = useState(() => callback);
useEffect(() => {
const debounceHandler = setTimeout(() => {
setDebouncedCallback(() => callback);
}, delay);
return () => {
clearTimeout(debounceHandler);
};
}, [callback, delay]);
return debouncedCallback;
};
export default useDebouncedCallback;