mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-10-14 17:54:42 +00:00
21 lines
564 B
TypeScript
21 lines
564 B
TypeScript
import { useEffect, useState } from 'react';
|
|
|
|
/**
|
|
* Returns a value that only updates after `delayMs` has passed without `value` changing.
|
|
*
|
|
* @example
|
|
* const debouncedQuery = useDebouncedValue(query, 300);
|
|
*/
|
|
const useDebouncedValue = <T>(value: T, delayMs: number): T => {
|
|
const [debounced, setDebounced] = useState(value);
|
|
|
|
useEffect(() => {
|
|
const timeout = setTimeout(() => setDebounced(value), delayMs);
|
|
return () => clearTimeout(timeout);
|
|
}, [value, delayMs]);
|
|
|
|
return debounced;
|
|
};
|
|
|
|
export default useDebouncedValue;
|