all repos — caroster @ v5.2

[Octree] Group carpool to your event https://caroster.io

frontend/hooks/useDebounce.ts (view raw)

 1import {useState, useEffect} from 'react';
 2
 3// https://github.com/xnimorz/use-debounce
 4/**
 5 *
 6 * @param {*} value Value to debounce
 7 * @param {number} delay Debounce time
 8 * @return {*}
 9 */
10function useDebounce<T extends unknown>(value: T, delay: number) {
11  const [debouncedValue, setDebouncedValue] = useState(value);
12
13  useEffect(() => {
14    const handler = setTimeout(() => {
15      setDebouncedValue(value);
16    }, delay);
17
18    return () => {
19      clearTimeout(handler);
20    };
21  }, [value, delay]);
22
23  return debouncedValue;
24}
25
26export default useDebounce;