React 重构 Effect List

473 阅读1分钟

简介

effectList 是应用更新后,fiber 树中有有副作用(flags effectTag已改名falgs)的 fiber 节点构成的链表。 在 commit 阶段会3次遍历次链表,执行相关工作,例如 PlacementDeleteUpdateRef 等。

重构

  • 移除 effectList
  • 改为遍历 fiber 树,来处理 commit 阶段相关工作。
  • fiber 新增字段
    • deletions 数组来收集需要删除的子节点
      • diff 阶段收集
      • commit 阶段处理删除
    • subtreeFlags 合并子树的 flags
      • beginWork 中会 flags 收集自身副作用。然后将 flags 上冒泡合并到祖先 subtreeFlags
      • 跟踪子树副作用。
      • 性能优化:在 commit 阶段,跳过无副作用子树。

更好的支持新功能

  • hidden/offscreen
  • Suspense