在react16之后出现Fiber 调和,在看到的资料中,都说Fiber是可中断的,可恢复的,根据优先级渲染,是异步的。
但是今天看了大佬们文章之后发现,react16.3非Concurrent模式下,使用ReactDom.render初次挂载和更新依然是同步渲染?
使用Concurrent模式下的ReactDOM.unstable_createRoot才会达到,挂载和更新都为异步渲染的效果!!
我懵逼了,是这样的嘛?那这样说,用ReactDom.render根本没有异步渲染啊,尽管引入Fiber,还是一撸到底啊!
那它还有啥优点啊?这都是为了Concurrent模式打基础嘛?
参考文章:
即使是在React17中用unstable_createRoot创建的React应用也不会开启时间切片功能,现阶段react对这个功能有着严格的控制基本处于禁用的状态详细逻辑这里,不过通过unstable_createRoot创建的应用处于ConcurrentMode所以他的batching逻辑会更加优秀从以前判断executionContext,迁移到更新的优先级,所以他的React18中的Automatic batching是能体验到的,如果想体验时间切片可以将allowConcurrentByDefault开启,然后重新打包即可,或者参考我的项目tiny-react