Notes

React 的 Diff 算法是什么样的

结论:React 的 Diff(reconcile)基于强假设做优化:只比较同层级、通过 key/type 复用 Fiber,列表用线性策略 + Map 查找,整体追求稳定的 O(n) 表现。

1. 单节点对比

  • key 相同再比 type:能复用就复用,否则删旧建新

2. 数组对比

  • 先从头按索引线性复用(快路径)
  • 发现错位后用 Map(key→旧 Fiber)查找可复用节点
  • 移动/插入打 Placement,剩余旧节点标记删除

3. key 的面试总结句

  • “key 表达身份,不表达位置;不稳定 key 会导致状态错位”

关联阅读

cd ..