useDebounce hook

@maya_devยท5d ago342 views
TypeScriptPublic
import { useState, useEffect } from 'react'

export function useDebounce<T>(value: T, delay = 300): T {
    const [debounced, setDebounced] = useState(value)

    useEffect(() => {
        const id = setTimeout(() => setDebounced(value), delay)
        return () => clearTimeout(id)
    }, [value, delay])

    return debounced
}

Comments(2)

@linuxgnu4d ago

Clean. I usually add a leading-edge option too.

devguest2d ago

Saved me a dependency, thanks!