2026-05-13 09:11:27
React 中的虚拟 DOM(Virtual DOM)是一种优化 DOM 操作的技术,旨在解决直接操作真实 DOM 带来的性能问题。以下是其核心实现原理和步骤的简洁总结:
虚拟 DOM 的核心思想轻量级副本
每个真实 DOM 对象对应一个虚拟 DOM 对象(JavaScript 对象),存储其属性和结构,但不直接渲染到屏幕。
操作虚拟 DOM 的速度远快于真实 DOM,因为无需触发浏览器的重排(Reflow)或重绘(Repaint)。
批量更新与差异比较(Diffing)
当组件状态或属性变化时,React 会重新生成整个虚拟 DOM 树(实际通过高效算法优化,非完全重建)。
通过 Diffing 算法对比新旧虚拟 DOM 树的差异,找出需要更新的最小节点集合。
精准更新真实 DOM
仅将差异部分应用到真实 DOM,避免不必要的操作(如示例中删除列表第一项时,仅移除对应节点而非重建整个列表)。
初始渲染
组件首次渲染时,React 根据 JSX 生成虚拟 DOM 树,并创建对应的真实 DOM。
状态更新触发重新渲染
当 state 或 props 变化时,组件生成新的虚拟 DOM 树。
Diffing 比较
React 对比新旧虚拟 DOM 树的差异,标记变化的节点(如属性修改、子节点增删等)。
提交到真实 DOM
将差异批量应用到真实 DOM,浏览器仅执行必要的重排和重绘。
将虚拟 DOM 想象为建筑蓝图,真实 DOM 是实际房屋:
通过虚拟 DOM,React 在保持开发简洁性的同时,显著提升了渲染性能,尤其适合数据驱动的现代 Web 应用。