Vue3中的suspense

在项目开发中,我们经常遇到这样一个问题
在我们请求接口数据过程中,从发起请求到拿到响应数据这段时间,我们通常会加一些提示性的内容在页面上,待接口请求完成再换成真实的内容,以提高用户的体验。

想必大家也和我一样,觉得这个过程很繁琐。。

而suspense组件就是用来解决这个繁琐的过程的

来看看它的使用
想要实现这个功能,我们需要在setup中返回一个promise实例
我这里配合async/await来实现,具体代码如下

// 子组件
<template>
  <div>
    {{ result }}
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue'
import axios from 'axios'
export default defineComponent({
  async setup () {
    const rawData = await axios.get('https://dog.ceo/api/breeds/image/random')
    return {
      result: rawData.data
    }
  }
})
</script>

// 父组件
<template>
  <suspense>
    <!-- #default 异步组件加载完成后页面呈现的内容 -->
    <template #default>
      <dog-show />
    </template>
    <!-- #fallback 异步组件加载完成前页面呈现的内容 -->
    <template #fallback>
      <h1>loading...</h1>
    </template>
  </suspense>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
import DogShow from '../../components/DogShow.vue'
export default defineComponent({
  components: {
    DogShow
  }
})
</script>

以上就是suspense的使用,看起来比较简单。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在vue3中新加了一个组件叫 ,其作用是当你在进行一个异步加载时,可以先提供一些静态组件作为显示内容,然后当异步...
    Ying0223阅读 2,571评论 0 0
  • 上次将 Composition API 大致梳理了一遍 ,这次主要是想记录一些 vue3 相较 vue2 新增出来...
    橙色流年阅读 3,480评论 0 5
  • 常用的 Composition API(组合API) setup Vue3.0新增的配置项,值为一个函数 setu...
    後來9527阅读 701评论 0 0
  • v2、v3双向绑定区别 v2 核心对象: 通过 defineProperty劫持对象已有的值的读取和修改数组: 通...
    奔跑的企鹅阅读 554评论 1 1
  • 一、xue的生命周期是什么 vue每个组件都是独立的,,每个组件都有一个属于他的生命周期,从一个组件创建、数据初始...
    康娜阅读 965评论 0 0