Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 8x 8x 8x 8x | import debounce from "lodash/debounce";
import { Dispatch, useEffect } from "react";
import { useDeepState } from "./useDeepState";
/**
*
* @param initialValue - initial value
* @param waitMillis - The number of milliseconds to delay.
* @param debounceSettings - settings passed to the debounce function
* @returns state, setter
*
*/
export function useDebouncedDeepState<S>(
initialValue: S,
waitMillis: number,
debounceSettings?: Parameters<typeof debounce>[2]
): [S, Dispatch<S>] {
const [state, setState] = useDeepState<S>(initialValue);
const debouncedSetState = debounce(setState, waitMillis, debounceSettings);
useEffect(() => () => debouncedSetState.cancel(), [debouncedSetState]);
return [state, debouncedSetState];
}
|