vue3内置组件Suspense

news2024/11/16 18:02:29

给多个异步组件提供一个统一的状态管理

使用前,有两个loading...

使用后, 只有一个loading...

Index.vue:

<script setup lang="ts">
import { onMounted, ref, defineAsyncComponent } from 'vue'
import { useRouter } from 'vue-router'
import Header from './Header.vue'
import LoadingComponent from './LoadingComponent.vue'
import ErrorComponent from './ErrorComponent.vue'
// import List from './List.vue'
// const List = defineAsyncComponent(() => import('./List.vue'))

// const List = defineAsyncComponent(() => {
//   return new Promise((resolve, reject) => {
//     setTimeout(() => {
//       let temp = import('./List.vue')
//       resolve(temp as never)
//     }, 2000)
//   })
// })

const List = defineAsyncComponent({
  loader: () => {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        let temp = import('./List.vue')
        resolve(temp as never)
      }, 1000)
    })
  },
  loadingComponent: LoadingComponent,
  delay: 200,
  errorComponent: ErrorComponent,
  timeout: 3000,
})

const router = useRouter()
const handleJump = (path: any) => {
  router.push(path)
}
onMounted(() => {})
</script>

<template>
  <div>
    <Suspense>
      <div>
        me
        <button @click="() => handleJump('/home')">home</button>
        <Header></Header>
      </div>

      <template #fallback>
        <div>loading...</div>
      </template>
    </Suspense>
    <List></List>
  </div>
</template>

Header.vue:

<script setup lang="ts">
let res: any = { count: 0 }
res = await new Promise((resolve) => {
  setTimeout(() => {
    resolve({ count: 1 })
  }, 2000)
})
console.log('res', res)
import { onMounted, ref } from 'vue'

onMounted(() => {})
</script>

<template>
  <div>header {{ res.count }}</div>
</template>

List.vue:

<script setup lang="ts">
import { onMounted, ref } from 'vue'

onMounted(() => {})
</script>

<template>
  <div>
    list
  </div>
</template>

LoadingComponent.vue:

<script setup lang="ts">
import { onMounted, ref } from 'vue'

onMounted(() => {})
</script>

<template>
  <div>loading...</div>
</template>

官方文档

https://cn.vuejs.org/guide/built-ins/suspense.html

人工智能学习网站

https://chat.xutongbao.top

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!

一、CTF简介 CTF&#xff08;Capture The Flag&#xff09;中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。…

什么是网络安全?一文了解网络安全究竟有多重要!

随着互联网的普及和数字化进程的加速&#xff0c;网络安全已经成为我们生活中不可或缺的一部分。然而&#xff0c;很多人对于网络安全的概念仍然模糊不清。 ​ 那么&#xff0c;什么是网络安全&#xff1f;它究竟有多重要呢&#xff1f; 一、网络安全的定义 网络安全是指通过…

【Java】/* JDK 新增语法 */

目录 一、yield 关键字 二、var 关键字 三、空指针异常 四、密封类 五、接口中的私有方法 六、instanceof 一、yield 关键字 yield关键字&#xff0c;从Java13开始引⼊。yield关键字⽤于从case的代码块中返回值。 原本的switch语句写法&#xff1a; public static void …

Notion爆红背后,笔记成了AI创业新共识?

在数字化时代&#xff0c;笔记软件已成为我们记录、整理和创造知识的得力助手。本文将带您深入了解Notion以及其他五个AI笔记产品&#xff0c;它们如何通过AI重塑笔记体验&#xff0c;满足我们快速记录、捕捉灵感、智能整理、情感陪伴和自动撰写文章的五大核心需求。 ———— …

NC 在两个长度相等的排序数组中找到上中位数

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给定两个递增…

项目比赛项目负责人的汇报技巧:如何让每一次汇报都清晰有力

项目比赛项目负责人的汇报技巧&#xff1a;如何让每一次汇报都清晰有力 前言MECE原则&#xff1a;确保全面性与互斥性SCQA结构&#xff1a;讲一个引人入胜的故事逻辑树思维模型&#xff1a;深入挖掘问题根源STAR法则&#xff1a;展示你的行动与成果PREP模型&#xff1a;清晰表达…

SAP 执行程序报错:Screen does not exist.解决办法

当我们第一次执行创建计划协议—ME31L和ME31事务代码的时候,可能会遇到下图中的这个报错,提示屏幕不存在 处理方式:我们要通过激活二级屏幕的方式激活即可。 1、执行事务代码:CMOD 自定义创建一个项目,这里我们创建的是ZMM02,然后点击创建 然后点击增强分配 将程序名称…

Opencv学习-图像翻转变换

1. flip函数介绍&#xff08;翻转&#xff09; void cv::flip(InputArray src, OutputArray dst, int flipCode ) src&#xff1a;输入图像。 dst&#xff1a;输出图像&#xff0c;与 src 具有相同的大小、数据类型及通道数。 flipCode&#xff1a;翻转方式标志。数值大于 0 表…

geoserver发布wms服务

注意事项&#xff1a;因为这里我安装的是geoserver2.25.2&#xff0c;所以jdk版本换成11&#xff0c;安装17的时候点击浏览文件&#xff0c;右上角转圈&#xff0c;f12打开控制台发现报错500 1、新建工作空间 2、编辑工作空间 3、添加新的存储仓库 4、选择矢量数据源下的第一个…

嵌入式day18

shell脚本配置 shell编程&#xff1a;&#xff08;shell/bash&#xff08;linux&#xff09; ->命令解释器&#xff09; 解释类编程语言 边翻译边执行 擅长文件处理&#xff0c;系统操作 开发效率高 执行效率低 移植性好 c语言&#xff1a; 编程型语言 先编译再执行 擅长数…

(leetcode学习)42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…

Linux常用命令全

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

八大排序--快速排序、希尔排序、冒泡排序、归并排序、堆排序等经典排序算法思想

目录 排序的分类 基本概念 插入排序 直接插入排序 折半插入排序 希尔排序 交换排序 冒泡排序 快速排序 选择排序 简单选择排序 堆排序 二路归并排序 基数排序 选择算法需要考虑的因素 排序的分类 其中比较重要的已做标记&#xff0c;下面来简要介绍一下 基本概…

【Python】任推邦近30日推广数据采集+推送

不知道任推邦是啥的&#xff0c;可以查看之前的文章&#xff1a;夸克网盘扩容N次20T的方法 本文主要是针对夸克网盘的&#xff0c;其他项目有的没有提供接口&#xff0c;如果有也自行抓包&#xff0c;参考修改一下就行了。主要是将接口返回内容以html表格形式进行推送&#xf…

数据结构-二叉树(java实现)及相关的oj题

文章目录 树树的定义&#xff1a;关于树的相关概念&#xff1a;树的实际实现形式&#xff08;表现形式&#xff09;树的应用 二叉树二叉树的概念特殊的二叉树二叉树的性质&#xff1a;二叉树的存储实现&#xff1a;二叉树的模拟实现&#xff1a;实现的成员方法与属性&#xff1…

CSS3中动画的制作案例

直接上代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>-webkit-keyframes expand {0% {border-width: 4px;}50% {border-width: 12px;}100% {border-width: 4px;height: 130px;width: 15…

C#对象和类型

属性、方法、字段 字段和属性的区别 在C#中&#xff0c;字段&#xff08;fields&#xff09;和属性&#xff08;properties&#xff09;都是类的成员&#xff0c;它们提供了类存储数据的方式&#xff0c;但它们在用途和功能上有着明显的区别。 字段 字段通常用来存储类…

组合优化与凸优化相关算法 Julia实现

线性规划 方法有单纯形法&#xff08;简单&#xff0c;非多项式&#xff09;&#xff0c;椭圆法&#xff08;复杂&#xff0c;多项式&#xff0c;仅有理论价值&#xff09;&#xff0c;内点法&#xff08;非多项式&#xff0c;实际效率高&#xff09;。 以例子说明&#xff0…

C++第五篇 类和对象(下) 初始化列表

目录 1.再探构造函数 2.类型转换 3.static成员 4.友元 friiend 1.再探构造函数 (1).之前我们实现构造函数时&#xff0c;初始化成员变量主要使用函数体内赋值&#xff0c;构造函数初始化还有一种方式&#xff0c;就是初始化列表&#xff0c;初始化列表的使用方式是以一个冒…

[Spring] SpringBoot统一功能处理与图书管理系统

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…