Home > database >  ReactJS useMemo inside function
ReactJS useMemo inside function

Time:12-28

I have this function:

const handleSearch = (event) => {
  const currentValue = event?.target?.value;
  const filteredData = searchTable(currentValue, originalData);
  setDataToTable(filteredData);
};

I tried to use useMemo() to memoize the value of filteredData in order to not perform the function searchTable because it's slow. I tried this inside the handleSearch function:

const filteredData = useMemo(() => searchTable(currentValue, originalData), [currentValue]);

But I get the Hooks can only be called inside of the body of a function component message which is correct.

How should I use useMemo for my case?

CodePudding user response:

You must store the search query into a state variable and use useMemo with this variable to compute the filtered data.

function App() {
  const [query, setQuery] = useState();
  const filteredData = useMemo(() => searchTable(query, originalData), [query]);
  
  function handleSearch(event) {
    setQuery(event?.target?.value);
  }

  return (...)
}
  • Related