Suspense 异步组件

1. 作用

<Suspense> 是 Vue 3 内置组件,用于协调异步依赖的处理。 它可以等待组件树中深层嵌套的异步组件(Async Component)或带有 async setup() 的组件 resolve 后,再渲染内容,期间展示 Loading。

2. 用法

<Suspense>
  <!-- 主要内容 -->
  <template #default>
    <Dashboard /> <!-- 里面可能有多个 async 组件 -->
  </template>

  <!-- 加载状态 -->
  <template #fallback>
    <LoadingSpinner />
  </template>
</Suspense>

3. 核心特性

  1. 只有一个 Loading:不论下面有多少个异步组件,Suspense 会等待它们全部加载完成才显示 default 插槽。避免了页面上出现多个 Loading 转圈(Loading 闪烁)。
  2. 竞态处理:处理新旧内容的切换。

4. 注意

  • 目前 <Suspense> 在 Vue 3 中仍标记为 实验性 (Experimental) 功能,API 可能会变。
  • 配合路由使用时,结构通常是:RouterView -> Suspense -> Component