useDebounceCallback
hookas/use-debounced-callbackFreeHook
A hook to debounce a callback
Install it
npx shadcn@latest add https://hookas.letstri.dev/r/use-debounced-callback.jsonSource
1'use client'23import * as React from 'react'45export function useDebouncedCallback<T extends (...args: any[]) => any>(6 fn: T,7 deps: React.DependencyList,8 delay: number,9): (...args: Parameters<T>) => void {10 const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null)1112 const debouncedFn = React.useCallback(13 (...args: Parameters<T>) => {14 if (timerRef.current) {15 clearTimeout(timerRef.current)16 }1718 timerRef.current = setTimeout(() => {19 fn(...args)20 }, delay)21 },22 [23 fn,24 delay,25 // eslint-disable-next-line react-hooks/exhaustive-deps26 ...deps,27 ],28 )2930 React.useEffect(() => () => {31 if (timerRef.current) {32 clearTimeout(timerRef.current)33 }34 }, [])3536 return debouncedFn37}
Files it writes
More from hookas
All 30 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| useAsyncEffectuse-async-effect | hookas | Hooks | Free | no deps | |
| useClickOutsideuse-click-outside | hookas | Hooks | Free | no deps | |
| useDebounceMemouse-debounced-memo | hookas | Hooks | Free | no deps | |
| useDebounceStateuse-debounced-state | hookas | Hooks | Free | no deps | |
| useElementSizeuse-element-size | hookas | Hooks | Free | no deps | |
| useFullscreenuse-fullscreen | hookas | Hooks | Free | no deps | |
| useIntervaluse-interval | hookas | Hooks | Free | no deps | |
| useIsInViewportuse-is-in-viewport | hookas | Hooks | Free | no deps |
