25 lines
539 B
TypeScript
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;
|
|
|