Skip to content Skip to sidebar Skip to footer

React Use Debounce With SetState

Background Assume we all know about the debounce function from lodash. If a user quickly input 1,12,123,1234, it allows us to proceed an alert only once, with 1234, after a certain

Solution 1:

Try this (using useCallback):

import React, { useState, useCallback } from "react";
import "./styles.css";
import { debounce } from "lodash";

const request = debounce(value => {
  alert(`request: ${value}`);
}, 1000);

export default function App() {
  const [input, setInput] = useState("");

  const debouceRequest = useCallback(value => request(value), []);

  const onChange = e => {
    debouceRequest(e.target.value);
    setInput(e.target.value); // Remove this line will lead to normal denounce
  };

  return (
    <div className="App">
      <input onChange={onChange} />
    </div>
  );
}

Edit elated-dawn-lb5ex


Post a Comment for "React Use Debounce With SetState"