Files
yaak/src-web/hooks/useDebouncedSetState.ts
2023-04-01 23:43:22 -07:00

13 lines
432 B
TypeScript

import type { Dispatch, SetStateAction } from 'react';
import { useMemo, useState } from 'react';
import { debounce } from '../lib/debounce';
export function useDebouncedSetState<T>(
defaultValue: T,
delay?: number,
): [T, Dispatch<SetStateAction<T>>] {
const [state, setState] = useState<T>(defaultValue);
const debouncedSetState = useMemo(() => debounce(setState, delay), [delay]);
return [state, debouncedSetState];
}