我有一个简单的 hello-world 示例来尝试useState
hook;然而,当我在控制台中输出测试信息时,我发现每当我启用useState
控制台时,都会记录两倍的信息。
请参阅CodeSandbox 中的示例(调试信息显示在控制台中)。
控制台语句位于函数体中,React
将在每次渲染时执行函数体。
React
将再次执行函数体,然后使用更新后的值记录状态。\n\n\n当您使用
\n\nReact.StrictMode
它可以多次渲染该组件。这就是您多次看到控制台日志的原因。提交阶段通常非常快,但渲染可能很慢。因此,即将推出的并发模式(默认情况下尚未启用)将渲染工作分解为多个部分,暂停和恢复工作以避免阻塞浏览器。这意味着 React 可能在提交之前多次调用渲染阶段生命周期,或者可能根本不提交而调用它们(由于错误或更高优先级的中断)。\n 渲染阶段生命周期包括以下类组件方法:
\n\n\n
\n\n- 构造函数\n\n
\n\n
- componentWillMount(或 UNSAFE_componentWillMount)
\n- componentWillReceiveProps(或 UNSAFE_componentWillReceiveProps)
\n- componentWillUpdate(或 UNSAFE_componentWillUpdate)
\n- 从Props获取DerivedState
\n- shouldComponentUpdate 渲染
\n- setState 更新器函数(第一个参数)
\n由于上述方法可能会被多次调用,因此重要的是它们不包含副作用。忽略此规则可能会导致各种问题,包括内存泄漏和无效的应用程序状态。不幸的是,检测这些问题可能很困难,因为它们通常是不确定的。
\n
您可以React.StrictMode
在这里阅读更多相关内容
归档时间: |
|
查看次数: |
898 次 |
最近记录: |