[重构] fragment 前置处理
yisar opened this issue · comments
伊撒尔 commented
当前的 fragment 是在 commit 阶段处理的,这会引发顺序问题
需要一种大型的重构来解决这个问题,这可能会比较困难
举个例子:
<B>
<li/>
<li/>
</B>
<C/>
<div/>
这种组件和元素混合的情况下,effectlist 顺序是这样的 B -> C -> button -> li -> li
按照 fre 现在的处理,对组件的操作会转移到它的孩子身上,也就是说,B C 会被跳过,那么遍历顺序就变成了 button -> li -> li
刚好顺序就错乱了,正确顺序应该是 li -> li -> button
,也就是说,应该跳过的是后续的 li,而不是组件
为了解决这个问题,需要进行重构,有两个选择
- effectlist 生成的时候,遇到组件,则将真实 fiber 存入 next 指针
- 生成原顺序的 effectlist,但如果遍历的时候跳过后续的 fiber
我想尝试一下第一种方案,因为这就是 effectlist 存在的意义,如果搞不定就,实现第二种