React 是怎么快速更新页面的?
Virtual DOM 是真实 DOM 的 JavaScript 对象表示。
它是一个轻量级的抽象层,让 React 可以用 JS 对象来描述 DOM 结构。
把旧树和新树对比,找出差异,这个过程叫 Reconciliation(协调)。
传统对比是 O(n³),React 把它降为 O(n),靠的是几个启发式规则:
<div> 变 <p>,直接销毁重建,不深度对比Key 和 Type 相同就复用,否则重建。
第一轮:遍历新旧列表,Key/Type 匹配就复用,不匹配就停。
第二轮:处理剩余节点。
lastPlacedIndex 记录位置,通过 insertBefore 移动| 概念 | 作用 |
|---|---|
| Virtual DOM | DOM 的 JS 对象表示 |
| Diff | 找新旧树的差异 |
| Key | 识别节点身份 |
| 同层比较 | 降低复杂度 |
Virtual DOM + Diff 就是 React 保持高性能的秘诀。