react useEffect 在并发/挂起模式下 deps 发生变化时不会触发

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

enter image description here 显然第67行在功能组件中记录了

count
,在第69行
count
中记录了效果,根据我的理解功能组件中的
count
和效果应该永远同步,但事实并非如此

enter image description here

count
从3变为4时,useEffect没有被触发,怎么会出现这种情况 有什么与并发/悬念相关的吗?

看起来很像 React 中的错误,还是有什么我遗漏的细节?

reactjs react-hooks react-suspense
2个回答
0
投票

感谢 Sujith Sandeep 的提示。 我可以确认功能组件的调用和useEffect不是一对一的关系 enter image description here enter image description here 至少我可以得出结论,功能组件中的值并不总是能够触发效果 然而,我仍然需要更多的来源来推理这种行为,我认为该行为与并发模式有关,不确定它是一个反应错误还是如预期的那样


0
投票

我的猜测是您将应用程序组件包装在

React.StrictMode
中。以该模式包装的所有组件都将安装、卸载然后再次安装,本质上会触发
useEffect
两次。

我不是 React 开发人员,所以我不确定我们需要它的原因,但我认为需要确保您的组件正常运行,运行

useEffect
两次不应该破坏您的应用程序并且您的应用程序可以工作在并发模式下。

const root = ReactDOM.createRoot(document.getElementById('root'))
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
)
© www.soinside.com 2019 - 2024. All rights reserved.