0

我有这个功能:

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

我试图用它useMemo()来记住的值,filteredData以便不执行该功能searchTable,因为它很慢。我在函数内部试过这个handleSearch

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

但我得到了Hooks can only be called inside of the body of a function component正确的信息。

我应该如何使用useMemo我的案例?

4

1 回答 1

0

您必须将搜索查询存储到 a 中state variableuseMemo与此变量一起使用来计算过滤后的数据。

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

  return (...)
}
于 2021-12-27T21:10:54.117 回答