首页 > 解决方案 > 在空数组更改中触发 React UseEffect 函数

问题描述

userEffect如果 prop 值从一个空数组更改为另一个空数组,我正在处理的反应应用程序会触发该函数。

我从页面获取查询参数并将它们传递到一个组件中,如果任何查询参数数组发生更改,该组件将重新呈现。但问题是,useEffect即使查询参数数组从 更改为 ,该函数也会触发并重新渲染[]组件[]

我知道[] !== [],也许这就是导致问题的原因。但是有没有一种方法可以让应用程序一开始就阻止触发 useEffect 函数?

这是一个代码沙盒演示: https ://codesandbox.io/s/vibrant-greider-qgjgs ?file=/src/App.js

标签: javascriptarraysreactjsreact-routernext.js

解决方案


您正在为测试分配新的引用,因此它正在触发更新。

您应该重新分配相同的数组并对其进行操作。

   const handleClick = () => {
   const arr = test
    setTest(arr);
  };

推荐阅读