React 的 Diff 算法是什么样的
结论:React 的 Diff(reconcile)基于强假设做优化:只比较同层级、通过 key/type 复用 Fiber,列表用线性策略 + Map 查找,整体追求稳定的
O(n)表现。
1. 单节点对比
- key 相同再比 type:能复用就复用,否则删旧建新
2. 数组对比
- 先从头按索引线性复用(快路径)
- 发现错位后用 Map(key→旧 Fiber)查找可复用节点
- 移动/插入打 Placement,剩余旧节点标记删除
3. key 的面试总结句
- “key 表达身份,不表达位置;不稳定 key 会导致状态错位”