Published on

Suspense组件

Authors
  • avatar
    Name
    李丹秋
    Twitter

Suspense组件

接收两个参数,一个是children,要渲染的组件,如果被渲染的组件阻塞的话,就会执行第二个参数,也就是falback方法,去返回一个占位组件。 只有包含了能够触发阻塞的数据源才能激活Suspense。他们包括:

  1. Relay和Next这种框架,默认支持
  2. 使用lazy标记的组件 Suspense 无法 检测在 Effect 或事件处理程序中获取数据的情况。 目前还不支持脱离框架使用支持 Suspense 的数据获取。实现支持 Suspense 的数据源的要求是不稳定的,也没有文档。用于将数据源与 Suspense 集成的官方 API 将在未来的 React 版本中发布。

同时展示内容

<Suspense fallback={<Loading />}>
  <Biography />
  <Panel>
    <Albums />
  </Panel>
</Suspense>

只要有一个组件渲染被挂起,整个被Suspense包裹的组件都不会渲染

逐步加载内容

<Suspense fallback={<BigSpinner />}>
  <Biography />
  <Suspense fallback={<AlbumsGlimmer />}>
    <Panel>
      <Albums />
    </Panel>
  </Suspense>
</Suspense>

当一个组件挂起(suspend)时,最近的父级 Suspense 组件会显示退路方案(fallback)。这允许你嵌套多个 Suspense 组件来创建一个加载序列。每个 Suspense 边界的退路方案(fallback)都会在下一级内容可用时填充。