UseEffect()函数没有被释放

问题描述 投票:0回答:1

大家好...我是一名 Angular 高级开发人员,正在开发一个新的 React 应用程序(我正在学习)。有一个概念我觉得我不明白。

enter image description here

站点地图:仪表板 > 主页

当我从仪表板访问首页时,如这段代码所示,useEffect() 挂钩会完成其工作并触发刷新页面(),但如果我来回访问,首页 api 调用就会堆积起来。 ..从 2 到 4、6 等 请注意:仪表板页面具有相同的 useEffect() 但正如您从屏幕截图中看到的那样,不会堆积请求。

enter image description here

据我了解,有两种可能性: 1- useEffect() 中的匿名函数保留在内存中并且永远不会被释放 2-页面中的某些内容保留在内存中并触发 useEffect()

我该如何解决这个问题?

reactjs react-hooks
1个回答
0
投票

React 18 及更高版本使用“严格模式”。 “当严格模式打开时,React 将在第一次真正的设置之前运行一个额外的仅开发设置+清理周期。这是一个压力测试,可确保您的清理逻辑“镜像”您的设置逻辑,并停止或撤消任何操作如果这导致问题,请实施清理功能。”来源

有关严格模式的更多信息: https://react.dev/reference/react/StrictMode

我不能确定是什么导致你的 useEffect 钩子继续增量运行,但有一些解决方案。

  1. 使用依赖项列表(末尾的数组)。该钩子将监视依赖项的更改,并且仅在检测到它们时才再次运行。 查看依赖关系
  2. 传递一个清理函数。 更多信息

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.