MCPcopy
hub / github.com/xnimorz/use-debounce / useDebounce

Function useDebounce

src/useDebounce.ts:8–42  ·  view source on GitHub ↗
(
  value: T,
  delay: number,
  options?: {
    maxWait?: number;
    leading?: boolean;
    trailing?: boolean;
    equalityFn?: (left: T, right: T) => boolean;
  }
)

Source from the content-addressed store, hash-verified

6}
7
8export default function useDebounce<T>(
9 value: T,
10 delay: number,
11 options?: {
12 maxWait?: number;
13 leading?: boolean;
14 trailing?: boolean;
15 equalityFn?: (left: T, right: T) => boolean;
16 }
17): [T, DebouncedState<(value: T) => void>] {
18 const eq = (options && options.equalityFn) || valueEquality;
19
20 const activeValue = useRef(value);
21 const [, forceUpdate] = useState({});
22 const debounced = useDebouncedCallback(
23 useCallback(
24 (value: T) => {
25 activeValue.current = value;
26 forceUpdate({});
27 },
28 [forceUpdate]
29 ),
30 delay,
31 options,
32 forceUpdate
33 );
34 const previousValue = useRef(value);
35
36 if (!eq(previousValue.current, value)) {
37 debounced(value);
38 previousValue.current = value;
39 }
40
41 return [activeValue.current as T, debounced];
42}

Callers 1

ComponentFunction · 0.85

Calls 1

useDebouncedCallbackFunction · 0.85

Tested by 1

ComponentFunction · 0.68

Used in the wild real call sites across dependent graphs

searching dependent graphs…