多个更新是存储在哪里的

来源: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

0
0

React源码深度解析 高级前端工程师必备技能

掌握React源码,让你的开发水平没有上限,更不惧前端未来的到来

1749 学习 · 336 问题

查看课程