Vue3内置组件suspense用法

vue3,内置,组件,suspense,用法 · 浏览次数 : 16

小编点评

**作用:** * 在使用异步组件时,由于需要等待组件加载完成后才能显示,可能会出现页面空白或显示错误信息的情况。 * Suspense组件可以用来在异步组件加载完成前显示一个占位符,提高用户体验。 **用法:** 1. 创建一个子组件 **AsyncShow**,使用 `promise` 包裹代码。 2. 在子组件中使用 `async` 和 `await` 关键字来异步获取数据。 3. 将子组件实例在父组件中使用 `async` 和 `setup` 方法中。 4. 使用 Suspense 组件将 **AsyncShow** 和 **DogShow** 组件挂载到一个 `Suspense` 中。 5. 在父组件中使用 `fallback` 插槽渲染子组件未加载完毕时候的内容。 **示例代码:** **子组件 AsyncShow** ```vue ``` **子组件 DogShow** ```vue ``` **父组件** ```vue ```

正文

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

与Vue3内置组件suspense用法相似的内容:

Vue3内置组件suspense用法

## 1、作用 在使用异步组件时,由于需要等待组件加载完成后才能显示,因此可能会出现页面空白或显示错误信息的情况。而 Suspense组件的作用就是在异步组件加载完成前显示一个占位符,提高用户体验。 ## 2、用法 * 首先子组件AsyncShow:使用了promise包裹代码 ```javascr

面试官:在原生input上面使用v-model和组件上面使用有什么区别?

前言 还是上一篇面试官:来说说vue3是怎么处理内置的v-for、v-model等指令? 文章的那个粉丝,面试官接着问了他另外一个v-model的问题。 面试官:vue3的v-model都用过吧,来讲讲。 粉丝:v-model其实就是一个语法糖,在编译时v-model会被编译成:modelValue

Nuxt3页面开发实战探索

摘要:这篇文章是关于Nuxt3页面开发实战探索的。它介绍了Nuxt3的基础入门,安装与配置,项目结构,内置组件与功能,以及页面与路由的相关内容。Nuxt3是基于Vue 3的服务器端渲染框架,旨在简化Vue应用程序的开发流程,提供最佳的性能和开发

彻底搞清楚vue3的defineExpose宏函数是如何暴露方法给父组件使用

众所周知,当子组件使用setup后,父组件就不能像vue2那样直接就可以访问子组件内的属性和方法。这个时候就需要在子组件内使用defineExpose宏函数来指定想要暴露出去的属性和方法

彻底搞清楚vue3的defineExpose宏函数是如何暴露方法给父组件使用

前言 众所周知,当子组件使用setup后,父组件就不能像vue2那样直接就可以访问子组件内的属性和方法。这个时候就需要在子组件内使用defineExpose宏函数来指定想要暴露出去的属性和方法。这篇文章来讲讲defineExpose宏函数是如何暴露出去这些属性和方法给父组件使用。注:本文中使用的vu

掉了两根头发后,我悟了!vue3的scoped原来是这样避免样式污染(上)

前言 众所周知,在vue中使用scoped可以避免父组件的样式渗透到子组件中。使用了scoped后会给html增加自定义属性data-v-x,同时会给组件内CSS选择器添加对应的属性选择器[data-v-x]。这篇我们来讲讲vue是如何给CSS选择器添加对应的属性选择器[data-v-x]。注:本文

vue3 | mitt的基本使用

# 一、安装 npm安装 ``` npm i mitt ``` pnpm安装 ``` pnpm i mitt ``` yarn安装 ``` yarn add mitt ``` # 二、使用 ## (一)、当前组件内使用 ```javascript import mitt from 'mitt' //

Vue 3 Teleport:掌控渲染的艺术

title: Vue 3 Teleport:掌控渲染的艺术 date: 2024/6/5 updated: 2024/6/5 description: 这篇文章介绍了Vue3框架中的一个创新特性——Teleport,它允许开发者将组件内容投送到文档对象模型(DOM)中的任意位置,即使这个位置在组件的

基于Vue3水印组件封装:防篡改守护!

基于Vue 3的全新水印通用组件封装。这款组件不仅功能强大,而且易于集成,能够轻松为您在网页任何位置添加自定义水印,有效防止内容被篡改或盗用。

Vue3等比例缩放图片组件

本文由 ChatMoney团队出品 有些情况我们需要在各种刁钻的情况下都要保持图片比例不变,比如用户缩放窗口等改变布局的情况。实现原理就是通过容器的宽度和内边距在保持你想要的比例。 以下是基础功能的组件示例: