我的应用程序处于严格模式下,这使得使用 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)