【React】虚拟DOM

49 阅读1分钟

虚拟 DOM 是一个用 JavaScript 描述的“假 DOM 树”,它帮助框架(如 React、Vue)更快、更高效地更新页面,只更新必要的部分,避免不必要的 DOM 操作。

通俗来说:【真实DOM的影子副本,保存在内存中】

🔍 为什么需要虚拟 DOM?

真实 DOM 有什么问题?

  • 真实 DOM(浏览器的 UI 结构)操作很慢
  • 每次更新页面,操作真实 DOM 都会导致重排(reflow)和重绘(repaint) ,性能开销大。 点击了解重排&重绘

虚拟 DOM 的优点:

  • 把 UI 先用 JS 对象描述出来(内存中构建虚拟树);
  • 当数据变化时,先生成新的虚拟 DOM;
  • diff 算法比较“新旧虚拟 DOM”的差异;
  • 最后只更新变化的部分到真实 DOM → 大幅减少操作次数、提高性能。

数据变了

React/Vue 重新构建虚拟 DOM

与旧的虚拟 DOM 比较(diff)

找出需要更新的地方

只更新真实 DOM 中对应的部分

🧪 举个例子(React)

const [count, setCount] = useState(0);

return <div>{count}</div>;
  • 页面初次渲染:构建虚拟 DOM,变成 { type: 'div', children: ['0'] }
  • 用户点击按钮更新 count = 1;
  • React 创建新的虚拟 DOM:{ type: 'div', children: ['1'] }
  • React 比较新旧:只发现 '0' → '1' 变了;
  • React 更新真实 DOM 中 <div> 的内容,而不是整个重新渲染。