小编Met*_*rei的帖子

我可以在我的应用程序中保留 <StrictMode> 但使其不渲染两次吗

我的应用程序处于严格模式下,这使得使用 useEffect() 运行变得困难。它基本上在控制台中记录了我所有的值两次,这不是我想要实现的结果。

 useEffect(() => {
console.log('logs some data')
}, []);
Run Code Online (Sandbox Code Playgroud)

有没有办法让 useEffect 只显示一次数据并将 StrictMode 保留在我的应用程序组件中?

root.render(
<React.StrictMode>
 <App />
</React.StrictMode>
);
Run Code Online (Sandbox Code Playgroud)

我确实尝试使用 useRef 方法,但我的工作人员建议我不要使用此特定方法并尝试其他可能的outwork。


解决方案:如果您需要在组件中保留严格模式,但需要使 useEffect 不渲染两次,您可以使用 useRef :

例子:

 let shouldlog = useRef(true);

 useEffect(() => {
 if (shouldlog.current) {
  shouldlog.current = false;
  console.log("component mounted");
  }

return () => console.log("function cleaned up");
}, []);
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks react-strictmode

8
推荐指数
1
解决办法
5038
查看次数