多个更新是存储在哪里的
来源:4-6 reactScheduler(2)
诺巴蒂
2023-08-11

老师这里有个问题想问下
如果正在处于 isRendering 阶段,就直接return掉了。
那如果有一个fiber结构 a->b->c->d
在 reconcilation 阶段,现在已经执行到了 c,这个时候,我在 a 又 setstate创建了一个更新。
这个新的 setstate 执行到这里的时候,由于isRendering 为 true,是不是就直接return了。
那这个新创建更新是保存在哪里的,或者 react怎么知道在当前的更新处理完,还要再执行一次我这个更新的调度。
主要是看到现在,还没找到存储每次更新的链表之类的结构,比如我创建第1个更新,reconcilation还没执行完,我又连续创建了4个更新,我理解会有一个地方,存储 2->3->4 这样一个待更新的任务链表。然后react分别去调度执行这些更新。看到后面的 nodelist 是好像是存储更新列表的地方,但是按这个逻辑根本走不到那里呀,如何插入进去。
写回答
1回答
-
Jokcy
2023-10-16
更新都是创建到updateQueue里面的,如果你在更新过程中创建了update,那么自然就放到queue的队尾端,本身React就在loop这个queue,那么自然他也会loop到最后新增的这个update上,所以在这里可以直接return
00
相似问题