为什么选择effect list
effect list是React源码commit阶段的一个特性,选择他的迭代历程讲解是因为:
他是源码内部的feature,对开发者不可知
表面上看起来这是一个不大的改动
他的改动是为了上层新特性而做的底层调整
什么是effect list
React内部工作大体可以分为3个阶段:
调度更新
决定什么组件需要更新
更新组件
那么第三步如何知道要更新哪些组件呢?靠effect list。
如果将React Fiber树比喻为圣诞树,那么每个Fiber节点就是圣诞树上的挂件。
其中需要更新的节点就是亮的彩灯。
如何找到亮的彩灯(需要更新的节点)呢?
从圣诞树顶向下一个挂件一个挂件找么(从根节点依次向下遍历)?
可行,但是效率太低。
为此,React的做法是:将需要更新的节点连接形成一条单链表。
查找时,只需要遍历这条单链表就行。就像圣诞树上的彩灯带一样。