@coreui/react-pro
Version:
UI Components Library for React.js
22 lines (18 loc) • 510 B
text/typescript
import { useRef, useCallback } from 'react'
export const useDebouncedCallback = <A extends unknown[]>(
callback: (...args: A) => void,
delay: number
) => {
const timeout = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)
return useCallback(
(...args: A) => {
const handler = () => {
clearTimeout(timeout.current)
callback(...args)
}
clearTimeout(timeout.current)
timeout.current = setTimeout(handler, delay)
},
[callback, delay]
)
}