- Suspense是Vue3推出的一个内置的特殊组件
- 如果使用Suspense,要返回一个Promise
Suspense 是 vue3 中新增的组件。自带两个 slot 分别为 default、fallback。顾名思义,当要加载的组件不满足状态时,Suspense 将回退到 fallback状态,一直到加载的组件满足条件,才会进行渲染。
一、使用场景
通常组件在正确呈现之前需要执行某种异步请求是很常见的, 例如,从一个 API 异步获取数据,并希望在数据渲染之前页面还是呈现一些效果,如 loading 效果。在Vue3中可以使用 suspense 组件很简单的实现这样的需求。
二、使用
2-1 定义异步组件
<template>
<h1>{{result}}</h1>
</template>
<script>
export default {
setup(){
return new Promise((resolve)=>{
setTimeout(()=>{
return resolve({result:40})
},3000)
})
}
}
</script>
2-2 Suspense
<template>
<div>
<Suspense>
<template #default>
<async-show/>
</template>
<template #fallback>
<h1>Loading!...</h1>
</template>
</Suspense>
</div>
</template>
<script>
import AsyncShow from './components/AsyncShow.vue';
export default {
name: "App",
components:{
AsyncShow
}
};
</script>