react16.3后非Concurrent模式下的挂载和更新依然是同步渲染嘛?

HerryLo
  • 170

在react16之后出现Fiber 调和,在看到的资料中,都说Fiber是可中断的,可恢复的,根据优先级渲染,是异步的。

但是今天看了大佬们文章之后发现,react16.3非Concurrent模式下,使用ReactDom.render初次挂载和更新依然是同步渲染?

使用Concurrent模式下的ReactDOM.unstable_createRoot才会达到,挂载和更新都为异步渲染的效果!!

我懵逼了,是这样的嘛?那这样说,用ReactDom.render根本没有异步渲染啊,尽管引入Fiber,还是一撸到底啊!

那它还有啥优点啊?这都是为了Concurrent模式打基础嘛?

参考文章:

React 架构的演变 - 从同步到异步
React 架构的演变 - 从递归到循环

回复
阅读 136
2 个回答

即使是在React17中用unstable_createRoot创建的React应用也不会开启时间切片功能,现阶段react对这个功能有着严格的控制基本处于禁用的状态详细逻辑这里,不过通过unstable_createRoot创建的应用处于ConcurrentMode所以他的batching逻辑会更加优秀从以前判断executionContext,迁移到更新的优先级,所以他的React18中的Automatic batching是能体验到的,如果想体验时间切片可以将allowConcurrentByDefault开启,然后重新打包即可,或者参考我的项目tiny-react

有大佬解释了,确实是这样。17后才正式上了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏