67
Vue 3 學習之旅
進階元件

Day 67: 深入 Suspense 元件 (實驗性)

·6 分鐘閱讀·進階元件

摘要

<Suspense> 是一個內建元件,用於協調元件樹中的非同步依賴。它可以在等待內部非同步元件載入完成時,渲染一個備用的載入狀態。

定義與說明

<Suspense> 提供兩個插槽:#default 和 #fallback。Vue 會首先顯示 #fallback 插槽的內容。當 #default 插槽中所有的非同步元件(使用 defineAsyncComponent 建立)或非同步 setup 函數都解析完成後,Vue 會自動切換,顯示 #default 插槽的內容。

實作範例

Vue SFC
<script setup>
import { defineAsyncComponent } from 'vue';
const UserProfile = defineAsyncComponent(() => import('./UserProfile.vue'));
</script>

<template>
  <Suspense>
    <!-- 當 UserProfile 載入完成時顯示 -->
    <template #default>
      <UserProfile />
    </template>
    <!-- UserProfile 正在載入時顯示 -->
    <template #fallback>
      <div>正在載入使用者資料...</div>
    </template>
  </Suspense>
</template>

結論

<Suspense> 提供了一種直接在模板層面處理非同步載入狀態的強大模式,簡化了過去需要手動管理 isLoading 狀態的繁瑣邏輯。注意:此功能目前仍處於實驗性階段。

Suspense 非同步載入 實驗性