Skip to content

Instantly share code, notes, and snippets.

@jhavenz
Created April 3, 2023 03:55
Show Gist options
  • Save jhavenz/4dde315cf54dba33218f1fd169d9faa9 to your computer and use it in GitHub Desktop.
Save jhavenz/4dde315cf54dba33218f1fd169d9faa9 to your computer and use it in GitHub Desktop.
useDebounce React Hook
import useTimeout from '@/hooks/useTimeout/useTimeout'
import React, { useEffect } from 'react'
export default function useDebounce(callback, delay, dependencies) {
const { reset, clear } = useTimeout(callback, delay)
useEffect(reset, [...dependencies, reset])
// eslint-disable-next-line react-hooks/exhaustive-deps
useEffect(clear, [])
}
import useDebounce from '@/hooks/useDebounce/useDebounce'
import React, { useState } from 'react'
export default function UseDebounceExampleComponent() {
const [count, setCount] = useState(10)
useDebounce(() => alert(count), 1000, [count])
return (
<div>
<div>{count}</div>
<button onClick={() => setCount((c) => c + 1)}>Increment</button>
</div>
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment