React 组件更新机制是面试重点,考察对 React 渲染原理的理解,核心是“状态/Props 变化 → 重新渲染 → Diff 对比 → 更新 DOM”,回答时要讲清完整流程。
核心要点:
React 组件更新的完整流程:
一、触发更新
当组件的状态(state)或接收的 props 发生变化时,会触发组件重新渲染(re-render)。
二、生成虚拟 DOM
组件重新执行渲染函数(函数组件)或 render 方法(类组件),生成新的虚拟 DOM 树(Fiber 树,React 16+ 引入,用于分片渲染,避免卡顿)。
三、Diff 算法对比
React 会对比“新虚拟 DOM 树”和“旧虚拟 DOM 树”,通过 Diff 算法(协调算法,Reconciliation)找出两者的差异(最小更新范围)。
四、更新真实 DOM
根据 Diff 对比的结果,只更新有差异的部分到真实 DOM,而不是重新渲染整个页面,从而提升性能。
关键注意点:默认情况下,父组件更新时,所有子组件都会随之重新渲染,即使子组件的 props 没有变化(这也是 React 性能优化的重点方向)。
——个人观点 · 仅供参考——