在调度中创建更新对象
在功能组件中,多个挂钩将形成一个链接的列表。每个挂钩将具有一个良好的环链接列表,并调用SchedulupDateOnFiber方法。
SchedulupDateOnFiber:在此光纤中,此更新的中间程度
从纤维中找到根后,请使用MarkupDateLaneFromFiberToroot从纤维节点上查找。
致电Markrootupded
更新过程可能是此过程。
优先类型:
n oliority = 0;//没有优先级
立即占主张= 1;//立即执行优先级
UserBlockingPriority = 2;//用户互动优先级
正常值= 3;//普通优先级
低优势= 4;// 低优先级
idlepriority = 5;//它可以中断优先级
在整个更新过程中,如果普通的SetState触发具有优先正常的更新,则将发现直到root,并且将保存在Fiberroot.Root Node上。
让我们简单地查看一个代码来分析页面性能(并发模式):
这是抓住低优先级任务的高优先任务的问题:
在渲染页面的开头,初始状态为15,000 0页。这没问题。
100毫秒后,将有正常优先级更新UpdateCount(1)。更新发现root后,它将生成更新计划。有15,000个光纤节点要更新。这是一个耗时的操作。
在1001毫秒处,userblockingPriority Primits update buttonref.current?.Click()目前被打断了。
基座:0与UpdateCount(Count => Count + 2)结合使用,以生成回忆:2。页面将首先渲染2。
下一个更新是更新和所有以后的更新。基座是0.的值,将有UpdateCount(1)和UpdateCount(Count => Count + 2),生产MemoizedState:3,并且页面将呈现3。
当这在组件中称为this.setstate时,它将输入
加入方法:
将根据当前实例获得当前光纤
然后获得当前时间,
然后获得小路优先级,
然后创建更新,update.payload =状态
因此,它可以回到文章开头的更新过程。
花没有完全打开,月亮不是圆形的
中山醉酒且无休止
为什么您必须担心利润和损失
毕竟,小米·旺夸
原始:https://juejin.cn/post/710012896049498504