@wojtekmaj/react-hooks
Version:
A collection of React Hooks.
25 lines (24 loc) • 809 B
JavaScript
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);
}