API
插件选项
mode
指定渲染模式,可选值为 'visible' 和 'hidden'。
- Type:
string - Default:
'visible'
例:
import VueAsyncManager from 'vue-async-manager'
Vue.use(VueAsyncManager, {
mode: 'hidden'
})
<Suspense> 组件
Props
| Name | Description | Type | Default |
|---|---|---|---|
| delay | fallback 内容的延迟展示的毫秒数 | Number | 0 |
Slots
| Name | Description |
|---|---|
| fallback | 当异步调用为完成之前要展示的内容 |
| error | 当异步调用发生错误时展示的内容 |
| default | 真正要渲染的内容 |
Events
| Name | Description |
|---|---|
| resolved | 当所有异步调用成功后触发 |
| rejected | 当某个异步调用发生错误时触发 |
Suspense 组件的容器元素
Vue2 的有状态组件中不能有多个根元素,为了降低复杂度,内部使用一个 div 作为容器包裹层,假设我们有如下代码:
<Suspense>
<p slot="loading">loading</p>
<p>Content</p>
</Suspense>
如果是在 visible 模式下,渲染出来的内容为:
<div class="vue-suspense-wrapper">
<p>loading</p>
<p>Content</p>
</div>
如果是在 hidden 模式下,渲染出来的内容为:
<div class="vue-suspense-wrapper">
<p>loading</p>
<div class="vue-suspense-hidden-wrapper" style="display: none;">
<p>Content</p>
</div>
</div>
可以通过为 <Suspense> 组件提供 class prop,从而为根元素添加额外的 class:
<Suspense class="custom-class">
<p slot="loading">loading</p>
<p>Content</p>
</Suspense>
渲染的内容为:
<div class="custom-class vue-suspense-wrapper">
<p>loading</p>
<p>Content</p>
</div>
这是 vue2 的行为。
Vue.setSuspenseOptions(options)
设置 Suspense 插件选项,例如:
Vue.setSuspenseOptions({ mode: 'hidden' })
← 在线演示