简介
effectList 是应用更新后,fiber 树中有有副作用(flags effectTag已改名falgs)的 fiber 节点构成的链表。
在 commit 阶段会3次遍历次链表,执行相关工作,例如 Placement ,Delete,Update,Ref 等。
重构
- 移除
effectList。 - 改为遍历
fiber树,来处理commit阶段相关工作。 fiber新增字段deletions数组来收集需要删除的子节点- 在
diff阶段收集 commit阶段处理删除
- 在
subtreeFlags合并子树的flags。beginWork中会flags收集自身副作用。然后将flags上冒泡合并到祖先subtreeFlags。- 跟踪子树副作用。
- 性能优化:在
commit阶段,跳过无副作用子树。
更好的支持新功能
hidden/offscreenSuspense- 修复
<Suspense>提前触发的怪异行为。
- 修复