Debounce and Throttle Callbacks with React Hooks | Kyle Shevlin

PHOTO EMBED

Fri May 13 2022 15:39:57 GMT+0000 (Coordinated Universal Time)

Saved by @Floony #jsx

function Search({ onSearch }) {
  const [value, setValue] = React.useState('')

  // This is the solution
  const debouncedSearch = React.useMemo(
    () =>
      debounce(val => {
        onSearch(val)
      }, 750),
    [onSearch]
  )

  const handleChange = React.useCallback(
    e => {
      setValue(e.target.value)
      debouncedSearch(e.target.value)
    },
    [debouncedSearch]
  )

  return <input type="text" value={value} onChange={handleChange} />
}
content_copyCOPY

https://kyleshevlin.com/debounce-and-throttle-callbacks-with-react-hooks