Skip to main content

useDependencyTimeout

A custom hook that uses useTimeout to reset the Timeout whenever a value in the provided dependency array changes.

The first argument is a callback function. The second argument can be a delay number or a TimerOptions object. TimerOptions is an object containing delay and enabled. The third argument is a deps dependency array. When any value in this array changes, the Timeout is reset.

Returns an object containing set, reset, and clear functions for directly controlling the Timeout.


Code

🔗 View source code


Interface

typescript
export function useDependencyTimeout(
callback: () => void,
delay: number,
deps: DependencyList
): ReturnType<typeof useTimeout>;

export function useDependencyTimeout(
callback: () => void,
options: TimeoutOptions,
deps: DependencyList
): ReturnType<typeof useTimeout>;

Parameters

NameTypeDescription
callback() => voidThe function to execute after the delay
delaynumber | TimeoutOptionsDelay in milliseconds or a { delay: number; enabled?: boolean } options object
depsDependencyListDependency array — when a value changes, the Timeout is reset

Returns

NameTypeDescription
set() => voidManually starts the Timeout.
reset() => voidResets and restarts the Timeout.
clear() => voidCancels the Timeout.

Usage

typescript
import { useDependencyTimeout } from '@modern-kit/react';

const Example = () => {
const [number, setNumber] = useState(0);
const [boolean, setBoolean] = useState(false);

const { set, reset, clear } = useDependencyTimeout(() => {
setNumber(number + 1);
}, 1000, [boolean]);

/*
* useDependencyTimeout(() => {
* setNumber(number + 1);
* }, { delay: 1000, enabled: true });
*/

return (
<div>
<p>{number}</p>
<button onClick={() => setBoolean(!boolean)}>Toggle dependency</button>
<div>
<button onClick={() => set()}>set</button>
<button onClick={() => reset()}>reset</button>
<button onClick={() => clear()}>clear</button>
</div>
</div>
);
};

Example

Count: 0