在 React 渲染时,有时候 useEffect 会运行两次

有时在React渲染时,useEffect会运行两次。

有时在React渲染时,useEffect可能会运行两次,通过在useEffect中使用console.log可以进行确认。

整理环境

    • node v18.11.0

 

    React 18.2.0

导致这个结果的因素有多种。

严格模式

解决方案

只需要简单地删除React.StrictMode标签就可以了。

スクリーンショット 2023-09-30 114716.png
スクリーンショット 2023-09-30 114740.png

然而,在理解原因之后,我们将执行。

React提供了与JavaScript的严格模式相同的语法。它严格规定了特定的语法,以便根据名称进行推导,并在服务运行的环境中安全运行。

React.StrictMode 的主要功能是检查组件的生命周期,并且在有问题的地方通知开发者。对于还不熟悉使用 React 的人来说,当 useEffect() 被执行两次时会感到不解。这个被执行两次的原因是 React.StrictMode 在开发者那里通知该组件不安全的操作,这被称为双重调用(double-invoking)。

React.StrictMode的这个警告行为仅在开发阶段适用,一旦发布就不会自动生效。
然而,在开发阶段,可能会出现意外行为,给开发者带来困惑。
为了避免混乱,建议先删除React.StrictMode,继续开发,可以吗?
对吧?笑

好的。

bannerAds