React 的渲染阶段与提交阶段有什么区别?
参考答案
渲染阶段根据 props、state 和 context 计算下一份 UI 描述;提交阶段把需要的变化应用到宿主环境,例如 DOM。一次渲染不一定最终提交,React 可能重试或中断部分计算。
因此组件渲染应保持纯粹:不要在函数体中发请求、修改外部变量或注册监听器。用户交互放在事件处理器,与外部系统同步放在合适的 Effect。开发模式的额外调用用于暴露不纯行为。
“组件重新渲染”不等于“所有 DOM 被重建”。性能排查需要区分计算成本与实际提交成本,使用 Profiler 观察,而不是仅凭 console.log 次数判断优化成败。