避免在一个嵌套依赖项更改时触发useEffect

时间:2020-01-27 02:15:34

标签: reactjs react-hooks

我的表单有3个字段,lambdaperiodfilterPattern。当lambdaperiod的值更改时,它将触发handleSearch。但是,我不希望handleSearch更改时触发filterPattern

如果我没有将filterPattern放在依赖项数组中,那么handleSearch将无法获得filterPattern的最新值。

如何避免在一个嵌套依赖项发生更改时触发useEffect?谢谢。

const getLogQuery = useCallback(() => ({
  lambda,
  period,
  filterPattern,
}), [lambda, period, filterPattern]);

const handleSearch = useCallback(async () => {
  await getLambdaLogs(getLogQuery());
}, [getLogQuery]);

useEffect(() => {
  handleSearch();
}, [handleSearch]);

const getLambdaLogs = async (query) => {
  const logs = await LambdaService.getLambdaLogs(query);
  setLogItems(logs);
}

1 个答案:

答案 0 :(得分:0)

我在做一些假设,但是$CSVArrayList = new-Object System.Collections.ArrayList [void]$CSVArrayList.Add(@('1','2','3')) [void]$CSVArrayList.Add(@('4','5','6')) Set-Content "./Output.csv" -Value $null Foreach ($arr in $CSVArrayList) { $arr -join ',' | Add-Content "./Output.csv" } 的第二个参数是它的依赖关系,它是监视何时触发的东西。所以代替

useEffect

没有任何意义,先观看一个函数,然后在该函数发生更改时调用该函数,将其更改为

useEffect(() => {
  handleSearch();
}, [handleSearch]);