useDebounceEffect
Runs an effect after dependency changes settle.
Runs an effect after dependency changes settle.
Import
import { useDebounceEffect } from '@kamod-ch/hooks'Live demo
Basic demo
Runs an effect after dependency changes settle.
Debounced effect runs: 0
import { useState } from 'preact/hooks'
import { useDebounceEffect } from '@kamod-ch/hooks'
export default function UseDebounceEffectDemo() {
const [query, setQuery] = useState('')
const [runs, setRuns] = useState(0)
useDebounceEffect(() => {
if (query) setRuns((value) => value + 1)
}, [query], { wait: 400 })
return (
<div>
<input value={query} onInput={(event) => setQuery(event.currentTarget.value)} placeholder="Type quickly" />
<p><strong>Debounced effect runs:</strong> {runs}</p>
</div>
)
}
API
TypeScript signature
import type { DependencyList, EffectCallback } from '../utils/types-compat.js';
import type { DebounceOptions } from '../useDebounce/debounceOptions.js';
declare function useDebounceEffect(effect: EffectCallback, deps?: DependencyList, options?: DebounceOptions): void;
export default useDebounceEffect;
/SSR considerations
This hook is safe to import during SSR. If your effect body touches the DOM, keep that work inside the effect callback.
Browser compatibility
Works in any modern browser supported by Preact.