File size: 507 Bytes
f59fbe2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import { useEffect, useRef, useState } from "react";
export function useDebouncedValue<T>(value: T, delayMs: number): T {
const [debounced, setDebounced] = useState(value);
const mountedRef = useRef(false);
useEffect(() => {
if (!mountedRef.current) {
return;
}
const timer = setTimeout(() => { setDebounced(value); }, delayMs);
return () => { clearTimeout(timer); };
}, [value, delayMs]);
useEffect(() => {
mountedRef.current = true;
}, []);
return debounced;
}
|