ConcurrentMode(以下简称CM)翻译叫并发模式,这个概念我已经听了好多年了,并且一度非常担忧
React官方憋了好多年的大招,会不会是一个破坏性不兼容的超级大版本?就像VUEv3和v2。现有的生态是不是都得跟着大版本升级?比如antdesign,ahooks等。随着对CM的了解,我发现它其实是人畜无害的。
CM本身并不是一个功能,而是一个底层设计,它使React能够同时准备多个版本的UI。
在以前,React在状态变更后,会开始准备虚拟DOM,然后渲染真实DOM,整个流程是串行的。一旦开始触发更新,只能等流程完全结束,期间是无法中断的。
在CM模式下,React在执行过程中,每执行一个Fiber,都会看看有没有更高优先级的更新,如果有,则当前低优先级的的更新会被暂停,待高优先级任务执行完之后,再继续执行或重新执行。
CM模式有点类似计算机的多任务处理,处理器在同时进行的应用程序之间快速切换,也许React应该改名叫ReactOS了。
这里举个例子:我们正在看电影,这时候门铃响了,我们要去开门拿快递。在React18以前,一旦我们开始看电影,就不能被终止,必须等电影看完之后,才会去开门。而在React18CM模式之后,我们就可以暂停电影,等开门拿完快递之后,再重新继续看电影。
不过对于普通开发者来说,我们一般是不会感知到CM的存在的,在升级到React18之后,我们的项目不会有任何变化。
我们需要