闲话先不说,兄弟可能是react版本高了,去main.js看看里面是不是有React.StrictMode,给这个东西注释掉可能就好了.
前几天用react18写项目,发现有点变化,项目根哪里的结构变了,没在意,想着用一下新的东西吧,就大胆的去踩坑了,但是在写第一个副作用的时候我就感觉,不对劲,这有点不对劲,为啥都走了两次啊,东查西查找了很多很多,咱也是见识短浅,不知道为啥.最后在一个很不起眼的地方发现有人说可能是react严格模式导致的,并且说是开发环境有,生产环境没有啥的,但是我这就是自己纯新建的个项目还没有想那么多,感觉没啥必要,但是这里面都走两次控制台看了就和吃屎一样.
结果注释掉了之后直接正常跑了,废了我好几个小时.
这是react给出的解释
Stricter Strict Mode: In the future, React will provide a feature that lets components preserve state between unmounts. To prepare for it, React 18 introduces a new development-only check to Strict Mode. React will automatically unmount and remount every component, whenever a component mounts for the first time, restoring the previous state on the second mount. If this breaks your app, consider removing Strict Mode until you can fix the components to be resilient to remounting with existing state.
更严格的模式:在未来,React将提供一个特性,让组件在卸载之间保持状态。为了准备它,反应18引入了一个新的仅限开发的检查到严格模式。React将自动卸载和重新装载每个组件,从而恢复第二次装载上的前一个状态。如果这破坏了您的应用程序,请考虑删除严格模式,直到您能够修复组件,以适应与现有状态的重新安装。