kimi-code / apps /vscode /webview-ui /src /hooks /useDebouncedValue.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
f59fbe2 verified
Raw History Blame Contribute Delete
507 Bytes
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;
}