如果不记得react18更新了什么内容,就来看这篇文章

271 阅读2分钟

react18 现已经正式发布了,那么有哪些新的概念或者机制被提出了呢?接下来就让我们来看看吧

1.增加了concurrent Mode :渲染模型变化,与之前的渲染有本质的区别,新的concurrent模式中,渲染是可以被中断的,可继续,也可终止的(之前的渲染都是线性的,一个个渲染操作按顺序执行,一旦开始没法中断),渲染可以在后台进行,渲染可以被分优先级。是一种新的机制。

2.新功能 transitions: startTransition(useTransition),默认代码里的状态改变引起的重新渲染是高优先级,我们可以用 startTransition(() => {setState 操作}) 将状态改变的操作包裹起来,这样的状态改变引起的渲染优先级为底。

3.Automatic batching 机制:之前在react中,除了在react的event handler,其他所有在promise,setTimeout, native event handlers 内产生的state update都不能被批量处理,每更新一次state就渲染一次,新react18 中可以被批量更新,只触发一次渲染。该机制是默认开启的,如果要禁用的话可以用flushSync(() => { setState 操作})包裹起来。但是官方不推荐这么处理。

4.suspense 包裹性组件: 1)fetch on render 两个组件 请求了第一个组件数据后,再渲染第一个组件,组件中第二个组件里也有请求,请求回来后,再渲染第二个组件。 2)fetch then render 两个组件 用promise.all包裹两个组件的请求,等请求数据都回来后,在渲染两个组件。 3)fetch while render (suspense)两个组件 可以用< div > < suspense >组件一 </ suspense >< suspense >组件二 </ suspense ></ div >包裹起来,这样就可以各自边请求边渲染,如果要有优先级的话,可以组件互相包裹起来。 < suspense >组件一 < suspense >组件二 </ suspense > </ suspense > 这样的话组件二 请求完后,再去走组件一请求,然后一起完整渲染.