SurfSense/surfsense_web/hooks/use-debounce.ts

19 lines
454 B
TypeScript
Raw Normal View History

2026-02-17 12:47:39 +05:30
import * as React from "react";
export const useDebounce = <T>(value: T, delay = 500) => {
2026-02-17 12:47:39 +05:30
const [debouncedValue, setDebouncedValue] = React.useState(value);
2026-02-17 12:47:39 +05:30
React.useEffect(() => {
const handler: NodeJS.Timeout = setTimeout(() => {
setDebouncedValue(value);
}, delay);
2026-02-17 12:47:39 +05:30
// Cancel the timeout if value changes (also on delay change or unmount)
return () => {
clearTimeout(handler);
};
}, [value, delay]);
2026-02-17 12:47:39 +05:30
return debouncedValue;
};