UNPKG

@wojtekmaj/react-hooks

Version:

A collection of React Hooks.

25 lines (24 loc) 809 B
import { useEffect } from 'react'; /** * Runs a given effect after a given delay. * * @param {EffectCallback} effect The effect to run * @param {DependencyList} deps The dependencies to watch * @param {number} [debounceTime=250] The delay to wait before running the effect * @returns {void} */ export default function useDebouncedEffect(effect, deps, debounceTime = 250) { useEffect(() => { let cleanup; const timeout = setTimeout(() => { cleanup = effect(); }, debounceTime); return () => { clearTimeout(timeout); if (cleanup) { cleanup(); } }; // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted debounceTime so it is not called every time it changes }, deps); }