Reactjs 为什么useState会导致dom呈现两次
我有一个简单的hello world示例来尝试Reactjs 为什么useState会导致dom呈现两次,reactjs,Reactjs,我有一个简单的hello world示例来尝试useStatehook;然而,当我在控制台中输出测试信息时,我发现每当我启用useState时,控制台都会记录两次该信息 请参见CodeSandbox中的(调试信息显示在控制台中)。useEffect异步运行,因此在开始时,首先,react将组件作为其正常行为进行渲染,然后useEffect运行,正如我们所知,每个设置状态都将导致组件重新渲染,这是第二次,这就是为什么您两次看到它的日志您的index.js具有带有React.StrictMode的应
useState
hook;然而,当我在控制台中输出测试信息时,我发现每当我启用useState
时,控制台都会记录两次该信息
请参见CodeSandbox中的(调试信息显示在控制台中)。useEffect异步运行,因此在开始时,首先,react将组件作为其正常行为进行渲染,然后useEffect运行,正如我们所知,每个设置状态都将导致组件重新渲染,这是第二次,这就是为什么您两次看到它的日志您的index.js具有带有React.StrictMode的应用程序组件包装器
这就是它的原因。console语句位于函数体中,
React
将在每次渲染时执行函数体
React
将再次执行函数体,然后用更新后的值记录状态李>
使用React.StrictMode
时,它可以多次渲染组件。这就是您多次看到控制台日志的原因
提交阶段通常非常快,但渲染可能很慢。因此,即将到来的并发模式(默认情况下尚未启用)会将渲染工作分成多个部分,暂停并继续工作以避免阻塞浏览器。这意味着React可以在提交之前多次调用呈现阶段生命周期,也可以在根本不提交的情况下调用它们(由于错误或更高优先级的中断)。
呈现阶段生命周期包括以下类组件方法:
您可以阅读更多关于React.StrictMode的信息谢谢您的详细解释:)