react-illustration-series
react-illustration-series copied to clipboard
请问下博主,是不是现在的16,17其实都是同步循环
因为我看到处的文章都是在说concurrent模式的时间切片,但是明明就没开启,搞的我很懵逼
主要就是想了解下,是不是其实除了没有开启concurrent模式外,其他的什么优先级那些都是存在的
18以前都是同步的,没有开启时间切片,也没有开启可中断渲染。现在18是开启了的。
其他的update优先级,渲染优先级是存在的。但是由于legacy模式下没有concurrent特性,故大部分的优先级是没有场景用的(虽然源码里面有,但是大部分没用上)。
18开始,优先级的使用场景要丰富很多,大部分都应用上了
的确是的。传统模式(包括18),都是同步循环。只有开启了并发特性的,比如使用了 createRoot
或者 useTransition
等,才会进入并发。进入时间分片的要求更加严格,需要不包含阻塞的优先级以及没有超时的更新,才会开启时间分片
https://github.com/facebook/react/blob/f7b44539ca9c2d126c7d12cfd0d9d4f13ad5851f/packages/react-reconciler/src/ReactFiberWorkLoop.new.js#L875
const shouldTimeSlice =
!includesBlockingLane(root, lanes) &&
!includesExpiredLane(root, lanes) &&
(disableSchedulerTimeoutInWorkLoop || !didTimeout);