useEffect 中无限循环

2023-12-06

我一直在使用 React 16.7-alpha 中的新钩子系统,当我处理的状态是对象或数组时,我会陷入 useEffect 中的无限循环。

首先,我使用 useState 并使用一个空对象启动它,如下所示:

const [obj, setObj] = useState({});

然后,在 useEffect 中,我再次使用 setObj 将其设置为空对象。作为第二个参数,我传递 [obj],希望它不会更新content对象的内容没有改变。但它不断更新。我想是因为无论内容如何,​​这些总是不同的对象,使得 React 认为它不断变化?

useEffect(() => {
  setIngredients({});
}, [ingredients]);

数组也是如此,但作为一个原语,它不会像预期的那样陷入循环。

使用这些新的钩子,在检查内容是否更改时应该如何处理对象和数组?


将空数组作为 useEffect 的第二个参数传递使其仅在挂载和卸载时运行,从而停止任何无限循环。

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

我在关于 React hooks 的博客文章中对此进行了澄清:https://www.robinwieruch.de/react-hooks/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

useEffect 中无限循环 的相关文章

随机推荐

  • 使用 if() 在 dplyr 管道链中使用 select()

    已经阅读了这两篇文章 dplyr 包可以用于条件变异吗 R 使用管道运算符时的条件评估 gt 我正在使用 Shiny input selector 如果用户选择了特定值 我希望我的数据框与其他值不同 这是一条链 filtered funne
  • 显示消息等待...当后台处理发生时

    我想将消息显示为 请稍候 直到我的 java 代码完成一些处理 page1 jsp 我的表单 其中有文本框和提交按钮 当单击提交按钮时 我正在执行表单提交并调用 page2 jsp 在页面 2 jsp 中 我从页面 1 jsp 请求参数并传
  • 如何使用 Java 发出 multipart/form-data POST 请求?

    在 Apache Commons HttpClient 版本 3 x 时代 可以进行 multipart form data POST 请求 2004年的例子 不幸的是 这在以下情况下不再可能HttpClient 4 0 版本 对于我们的核
  • 列出 R 向量中的不同值

    如何列出向量中具有重复值的不同值 我的意思是 类似于下面的 SQL 语句 SELECT DISTINCT product code FROM data 你的意思是unique R gt x c 1 1 2 3 4 4 4 R gt x 1
  • Gulp.js 任务,返回 src?

    我是 gulp 的新手 一直在研究示例设置 有些人有以下结构 gulp task XXXX function gulp src 其他人有这个 gulp task XXXX function return gulp src 我想知道有什么区别
  • 使用 getImageData、javascript、HTML5 canvas 会导致内存泄漏吗

    我正在使用 canvas 元素 并尝试在 FIrefox 4 中使用 Javascript 对图像进行一些基于像素的操作 以下代码泄漏内存 我想知道是否有人可以帮助识别泄漏的内容 使用的图像是预加载的 一旦加载 到 pImages 数组中
  • 如何使用 spring-data-couchbase 为特定 Couchbase 文档设置 TTL?

    如何使用 spring data couchbase 为特定的 couchbase 文档设置 TTL 生存时间 我知道有一种方法可以使用文档符号设置到期时间 如下所示 Document 过期 10 http docs spring io s
  • IIS FTP 7.5 扩展性(IFtpLogProvider 并将 FTP 故障记录到事件日志中)

    任何非常熟悉 IIS 中 FTP 7 5 可扩展性的人都知道我可能做错了什么吗 我在使 IFtpLogProvider 的实现正常工作以进行自定义日志记录时遇到严重困难 我想做的就是将超出静态阈值的故障记录到事件日志中 并经常进行垃圾收集
  • Python:tarfile 流

    我想从 tarball 中读取一些文件并将其保存到新的 tarball 中 这是我写的代码 archive dum 2164 archive tar Read input data input tar tarfile open archiv
  • ASP.NET:将数据从内容页传递到母版页[重复]

    这个问题在这里已经有答案了 我有一个名为headerLabel在我的母版页中 我想将其文本设置为内容页面中的标题 我该怎么做呢 在您的主页上创建一个公共属性 类似于 public string LabelValue get return t
  • 如何在openGL中纹理随机凸四边形

    好吧 为了制作一个 我的世界 模组 我开始查找 openGL 教程 我对此仍然不太了解 因为我认为在进行我想要的小修改时我真的不应该这样做 但这让我很头疼 我想要做的就是能够将纹理正确映射到不规则的凹四边形 像这样 在尝试在游戏中运行代码之
  • chrome.filesystem 保存文件而不提示位置

    我可以将文件保存在自定义位置 home Users user1 带名字file1 txt 我有这个代码 chrome fileSystem chooseEntry type openDirectory function entry chro
  • 在 VB.net 中打印外部 PDF 文档

    我知道这个问题以前曾被问过 但我的情况有点不稳定 基本上 我正在尝试打印使用以前的 Windows 窗体生成的 PDF 文件 我可以毫无问题地找到该文件 并且我使用了从 MSDN 帮助论坛找到的以下代码 Dim p As New Syste
  • 返回响应后关闭 HTTP 服务器

    我正在构建一个基于命令行的 Go 机器人 它与 Instagram API 交互 Instagram API 基于 OAuth 因此不太适合基于命令行的应用程序 为了解决这个问题 我在浏览器中打开适当的授权 URL 并使用我为重定向 URI
  • 如何正确加载数千条记录到Realm?

    我尝试使用 Realm 将大约 8000 条记录保存到磁盘中 但它阻塞了 UI 结果 我用Realm asyncOpen在后台线程中执行数据保存 当我尝试以这种方式保存大量记录时 问题是 CPU 使用率 100 如何正确加载数千条记录到Re
  • Discord.py 从机器人向机器人发送斜线命令

    我正在开发一个机器人 该机器人应该在 Discord 频道中发送斜杠命令 并且这些斜杠命令将由同一频道中的另一个机器人接收 但是 当我发送格式为斜杠命令的消息时 另一个机器人不会将其检测为命令 而是将其检测为简单的文本消息 这是我的代码 i
  • 如何枚举所有分区并聚合结果

    我有一个多分区的有状态服务 我怎样才能枚举它的所有分区和聚合结果 使用服务远程处理用于客户端和服务之间的通信 您可以使用枚举分区FabricClient var serviceName new Uri fabric MyApp MyServ
  • "yieldbreak;" 是什么意思?在 C# 中做什么?

    我在MSDN上看到过这样的语法 yield break 但我不知道它有什么作用 有人知道吗 它指定迭代器已结束 你可以想到yield break as a return不返回值的语句 例如 如果将函数定义为迭代器 则函数的主体可能如下所示
  • Nodejs 异步/等待 mysql 查询

    我有一个当前结构如下的nodejs项目 我需要在客户端表上插入一个注册表并从该表返回最后插入的ID 以便我可以在第二个表中使用它 但我需要等到插入完成客户表 然后将客户 ID 插入到我的第二个表中 我正在尝试使用 async await 但
  • useEffect 中无限循环

    我一直在使用 React 16 7 alpha 中的新钩子系统 当我处理的状态是对象或数组时 我会陷入 useEffect 中的无限循环 首先 我使用 useState 并使用一个空对象启动它 如下所示 const obj setObj u