我今天学到的关于 React 渲染的内容

发布: (2025年12月22日 GMT+8 11:30)
3 min read
原文: Dev.to

Source: Dev.to

关于 React 渲染的今日学习封面图

React 的渲染过程(快速回顾)

每当 state 或 props 变化时,React 会重新渲染组件。这并 意味着浏览器的 DOM 会立即更新。相反,React 会:

  • 重新执行组件函数
  • 创建一个新的虚拟 DOM 树
  • 将其与之前的树进行比较
  • 只更新实际改变的真实 DOM 部分

这个比较步骤称为 diffing(差异比较)

Diffing 的工作原理

React 使用调和算法(reconciliation algorithm)高效地比较旧的和新的虚拟 DOM 树。为了让这个过程保持快速,React 依循两个核心假设。

规则 1:不同的元素类型会产生不同的树

如果元素类型发生变化,React 会假设整个子树都已改变。
例如,如果一个 <div> 变成了 <span>,React 不会尝试比较它们的子节点;它会移除旧的子树并从头构建一个新树。此快捷方式避免了昂贵的深度比较。

规则 2:具有相同稳定 key 的元素在不同渲染之间是相同的

在渲染列表时,React 依赖 key 属性来标识元素。

items.map(item => (
  
))

稳定的 key 让 React 能够正确检测:

  • 哪些项目发生了变化
  • 哪些保持不变
  • 哪些被添加或删除

如果缺少合适的 key,React 可能会按索引匹配元素,这会导致更新错误和状态丢失。

为什么 key 属性很重要

key 属性为 React 提供了一种可靠的方式来跨渲染跟踪元素。

  • 相同的 key → 相同的组件实例
  • 不同的 key → 新的组件实例

当 key 缺失或不稳定时,React 会发出警告,因为它们对正确的 diffing 和可预测的行为至关重要,尤其是在列表中。

结语

理解这些规则会让 React 的行为变得更加可预测。重新渲染并不是需要避免的——它是 React 高效工作的一部分。使用稳定的 key 并了解 diffing 原理,有助于编写行为正确且易于扩展的组件。

Back to Blog

相关文章

阅读更多 »