首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >React UseEffect函数在空数组更改中触发

React UseEffect函数在空数组更改中触发
EN

Stack Overflow用户
提问于 2020-09-04 14:16:21
回答 3查看 405关注 0票数 0

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

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

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

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

EN

回答 3

Stack Overflow用户

发布于 2020-09-04 14:36:38

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

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

代码语言:javascript
代码运行次数:0
运行
复制
   const handleClick = () => {
   const arr = test
    setTest(arr);
  };
票数 1
EN

Stack Overflow用户

发布于 2020-09-04 14:39:55

您可以创建自己的自定义钩子来检查每个依赖数组项的深度相等,也可以使用use-deep-compare-effect之类的钩子

票数 1
EN

Stack Overflow用户

发布于 2020-09-04 15:06:07

除了上面的答案,you can also use React.memo as a way to do a comparison check between previous props and new props。如果你的道具有点复杂,你也可以在上面加上Lodash。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63735803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档