use-debounce.js 380 B

1234567891011121314151617
  1. import { useEffect, useState } from 'react'
  2. export default function useDebounce(value, delay = 0) {
  3. const [debouncedValue, setDebouncedValue] = useState(value)
  4. useEffect(() => {
  5. const timer = window.setTimeout(() => {
  6. setDebouncedValue(value)
  7. }, delay)
  8. return () => {
  9. window.clearTimeout(timer)
  10. }
  11. }, [value, delay])
  12. return debouncedValue
  13. }