summaryrefslogtreecommitdiff
path: root/hooks/use-debounce.ts
blob: 5c0b504a2093e2d8567e90a1cac549dfeec9fdb1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import * as React from "react"

export function useDebounce<T>(value: T, delay?: number): T {
  const [debouncedValue, setDebouncedValue] = React.useState<T>(value)

  React.useEffect(() => {
    const timer = setTimeout(() => setDebouncedValue(value), delay ?? 500)

    return () => {
      clearTimeout(timer)
    }
  }, [value, delay])

  return debouncedValue
}