此问题已在此处有答案:
Why is my React component is rendering twice?(10个答案)
Why useEffect running twice and how to handle it well in React?(3个答案)
去年关闭。
我有一个名为(First)的功能组件
function First() {
const [count,setCount]=useState(0)
console.log("component first rendering") // this logging is happening twice
return (
<div>
first component
</div>
)
}
当我最初运行应用程序时,console
语句记录了两次为什么,它应该只记录了一次,因为我没有显式地更新状态。
2条答案
按热度按时间kcrjzv8t1#
我已经在code sandbox中尝试过了,果然,它渲染了两次。这是因为,在
index.js
文件中,它使用了React.StrictMode
。根据documentation:
严格模式不能自动为您检测副作用,但它可以通过使它们更具确定性来帮助您发现它们。这是通过故意双重调用以下函数来实现的:
这通常是为了帮助仅在开发环境中发现副作用。它不适用于生产环境。
因此,如果您不希望它渲染两次,只需删除
index.js
文件中的<React.StrictMode> </ React.StrictMode>
,它就会正常工作。希望有帮助:)
wgx48brx2#
这是因为您的应用程序被 Package 在
React.StrictMode
下。React 16.* 中为函数组件引入了严格模式。我们将组件 Package 在
React.StrictMode
下,以识别应用程序中的潜在错误。StrictMode有助于维护大型代码库的稳定性,并有助于升级到新版本的React。StrictMode在控制台中记录我们的应用程序可能存在的问题的错误:
React.StrictMode需要触发一些方法和生命周期钩子两次来解决这些问题:
**结论:**React.StrictMode是由React社区提供的,帮助我们的应用程序跟踪更改,我们可以轻松地将应用程序升级到新版本。