请问老师关于react16.7版本的expriationTime的问题

来源:4-2 scheduleWork

Osuribaba

2019-01-16

在react16.7.0以下的版本中,scheduleWorkToRoot函数中在更新fiber以及fiber父节点的expriationTime的时候,都是判断的当fiber.expirationTime < 传进来的expirationTime才会重新赋值:
图片描述

但是在react16.7.0以下的版本中,scheduleWorkToRoot函数中重新给截止时间赋值时,是当fiber.expriationTime > 传进来的expirationTime才会重新赋值:
图片描述

我看computeExpirationBucket这个计算expriationTime的方法16.7和以下版本也有些不一样了。
所以请问老师react在16.7以上版本中的expriationTime的语义是不是已经发生变化了?

写回答

2回答

Jokcy

2019-01-16

是的,16.7统一按照越大的优先级越高的模式走了,之前Sync是等一1,16.7里面Sync是maxIntxxxxx了。但是原理是一样的,就是判断优先级换了个方法,不需要先判断是否等于Sync

0
1
Osuribaba
好的明白了,谢谢老师~
2019-01-17
共1条回复

Osuribaba

提问者

2019-01-16

而且16.7.0中好像不止这个scheduleWorkToRoot函数中的符号和低版本不一样。其他地方也有的大于号小于号是相反的。所以我寻思是不是16.7里头这个expriationTime改变了计算方式,导致整个语义就反过来了?

0
0

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

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

1749 学习 · 336 问题

查看课程