reconcileSingleElement
一句话结论:单元素 Diff 的核心是“用 key 在旧兄弟链上找到同身份节点,再用 type 判断能否复用”;能复用就复用 Fiber,否则删旧建新。
1. 典型步骤(概念)
- 遍历旧的 child 兄弟链,寻找 key 相同的节点
- 找到后比较 type:
- 相同:复用该 Fiber(并删除其余不匹配兄弟)
- 不同:删除找到的旧 Fiber,继续找(或最终新建)
- 没找到:直接创建新 Fiber
2. 为什么要删除“其余兄弟”
- newChild 只有一个:旧的其它兄弟在新树中不存在,必须删除
3. 面试要点
- key 先于 type:先确认“是不是同一个人”,再确认“是不是同一种组件”