首页 > 其他分享 >Vue3内置组件suspense用法

Vue3内置组件suspense用法

时间:2023-08-25 11:57:20浏览次数:34  
标签:DogShow 内置 return vue suspense Vue3 组件 import defineComponent

1、作用

在使用异步组件时,由于需要等待组件加载完成后才能显示,因此可能会出现页面空白或显示错误信息的情况。而 Suspense组件的作用就是在异步组件加载完成前显示一个占位符,提高用户体验。

2、用法

  • 首先子组件AsyncShow:使用了promise包裹代码
<template>
  <div>
    <h1>{{ result }}</h1>
  </div>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
 
export default defineComponent({
  setup() {
   return new Promise((resolve) => {
    setTimeout(() => {
      return resolve({
        result: 2
      })
    }, 3000)
   })
  },
})
</script>
  • 子组件DogShow代码:使用了async await
<template>
  <div>
    <img :src="rowData && rowData?.data.message" alt="">
  </div>
</template>
<script lang="ts">
import axios from 'axios'
import { defineComponent } from 'vue'
 
export default defineComponent({
  async setup() {
 
    const rowData = await axios.get('https://dog.ceo/api/breeds/image/random')
    return {
      rowData
    }
  },
})
</script>

以上promise 和 async都可以达到效果
父组件引入,suspense包裹这两个组件,然后用fallback插槽渲染子组件未加载完毕时候的内容

<template>
    <Suspense>
        <div>
          <AsyncShow></AsyncShow>
          <DogShow></DogShow>
        </div>
         <!-- 在 #fallback 插槽中显示 “Loading...” -->
        <template #fallback>
          Loading...
        </template>
  </Suspense>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import AsyncShow from './components/AsyncShow.vue';
import DogShow from './components/DogShow.vue';
export default defineComponent({
  setup() {
    return {}
  },
})
</script>

效果:
image

标签:DogShow,内置,return,vue,suspense,Vue3,组件,import,defineComponent
From: https://www.cnblogs.com/never404/p/17656563.html

相关文章

  • vue3 使用 setup 语法糖时,keep-alive 缓存使用 include / exclude 获取组件名
    <template><router-viewv-slot="{Component,route}"><keep-alive:include="['ComponentName']"><component:is="Component":key="route.name"/></keep-alive>......
  • vue3 报错:husky - pre-commit hook exited with code 1 (error)
    问题:git提交不上去解决方法:   "format":"prettier--write\"./**/*.{html,vue,ts,js,json,md}\"",......
  • Nginx内置lua版OpenResty拦截转发请求Redis等操作
    Nginx内置lua版OpenResty拦截转发请求Redis等操作1下载并安装OpenRestyhttp://openresty.org/cn/download.html2下载lua-resty-http-0.17.1库以让openresty的lua支持外部http访问能力lua-resty-http-0.17.11下载lua-resty-http-0.17.12然后将文件中lua-resty-http......
  • Vue3 中 keepAlive 如何搭配 VueRouter 来更自由的控制页面的状态缓存?
    在vue中,默认情况下,一个组件实例在被替换掉后会被销毁。这会导致它丢失其中所有已变化的状态——当这个组件再一次被显示时,会创建一个只带有初始状态的新实例。但是vue提供了keep-alive组件,它可以将一个动态组件包装起来从而实现组件切换时候保留其状态。本篇文章要介绍的......
  • javaScript之内置对象1
    一:概述JavaScript内置对象表示Web浏览器内部支持的对象,它们提供了很多有用的功能,让使用者可以快速实现许多功能。二:说明及其举例说明数据类型:包括Number、String、Boolean、Object、Array等,这些对象提供了用于操作基本数据类型的方法。例如,使用String对象的substring()方法可以截取......
  • Vite + Vue3 + Element-Plus
    搭建Vite项目注意Vite需要 Node.js 版本14.18+,16+。然而,有些模板需要依赖更高的Node版本才能正常运行,当你的包管理器发出警告时,请注意升级你的Node版本。使用NPM: npmcreatevite@latest使用Yarn:yarncreatevite使用PNPM:pnpmcreatevite输入项......
  • vue3 用vite创建项目
    1.第一步运行创建命令(npm)npmcreatevite@latest注意的地方:首次创建的时候会出现这个 直接y就行了Needtoinstallthefollowingpackages:create-vite@latestOktoproceed?(y)直接y就行了2.第二步创建项目名称?Projectname:»vue3-demo3.第三步找到vue即可(下边有......
  • 安装vue3+vite报错
    报错:‘D:\Program‘不是内部或外部命令,也不是可运行的程序;我已经配置过环境变量,发现是node安装目录D:\ProgramFiles\nodejs,中间有空格导致,只能改变nodejs位置1.把nodejs整个剪切出来放在d盘根目录下面2.修改node的全局环境npmconfigsetcache"D:\nodejs\node_cache......
  • vue3 和 react18 对比
    Vue3和React18是目前最新的版本,它们都是非常受欢迎的前端框架。下面是对Vue3和React18进行深度对比的一些关键点:组件模型:Vue3:Vue3采用了基于函数的组件模型,即使用setup函数来定义组件逻辑。这种方式更加直观和灵活,允许开发人员以更简洁的方式编写组件。React18:React18仍然......
  • vue3 使用 router 进行跳转备忘
    1.在画面中添加子画面,使用el-menu菜单进行跳转,只更新子画面a.首先在配置router路径的js文件中配置画面的路径,子画面的路径要在父画面的children下面 在父节点下设置redirect属性,打开父画面时会默认打开相应子画面,否则子画面默认显示为空白 b.在画面显示区域添加......