vue3在setup中请求数据并使用的几种方式

news/2024/11/26 1:26:14/

因为Composition组合式API setup有一点点不同特此举例几种可行的请求数据并使用方式
第一种 Promise
参考代码如下

<template><div>{{ min }}</div>
</template><script>
import { ref } from 'vue';
import { getUser } from '@/api/user'
export default {setup(){let min = ref("");getUser(30).then(res=>{min.value = res;}).catch(err=>{console.log(err);})return {min}}
}
</script><style></style>

运行结果如下
在这里插入图片描述
这应该是影响最小的一种 基本和以前写法没什么不同

第二种 在其他声明周期中用 async await 以onMounted为例
参考代码如下

<template><div>{{ min }}</div>
</template><script>
import { ref,onMounted } from 'vue';
import { getUser } from '@/api/user'
export default {setup(){let min = ref("");onMounted(async () => {min.value = await getUser(30);});return {min}}
}
</script><style></style>

这里 我们在onMounted的声明周期函数上设置async
在里面通过await请求
运行结果如下
在这里插入图片描述
也没有任何的副作用 而且看着也很规范整洁

最后一种 直接在setup上用 async await 不推荐
参考代码如下

<template><div>{{ min }}</div>
</template><script>
import { ref } from 'vue';
import { getUser } from '@/api/user'
export default {async setup(){let min = ref("");min.value = await getUser(30);return {min}}
}
</script><style></style>

但你直接这样用的话 组件会加载不出来 要在调用组件的地方 外面套一对suspense
在这里插入图片描述
如果是路由加载的组件直接加给 router-view 就好了

<suspense><router-view />
</suspense>

运行结果如下
在这里插入图片描述
虽然也能正常加载数据 但你直接在setup上用async 会发现其他例如onMounted这些写在setup中的异步声明周期不执行了
第三种方法问题比较多 所以不推荐使用

个人建议能用第二种 尽可能写第二种 维护性会好一些


http://www.ppmy.cn/news/76911.html

相关文章

书评 | 《深入理解高并发编程:JDK核心技术》

书评 | 《深入理解高并发编程&#xff1a;JDK核心技术》 作者简介 冰河&#xff1a;互联网资深技术专家、数据库技术专家、分布式与微服务架构专家&#xff1b;多年来一直致力于分布式系统架构、微服务、分布式数据库、分布式事务与大数据技术的研究&#xff0c;在高并发、高可…

设计模式之代理模式

文章目录 1、代理模式基本介绍2、Jdk中的动态代理2.1、场景推导2.2、Jdk动态代理 3、静态代理4、代理模式的关键点5、代理模式和适配器模式的比较6、代理模式UML图 1、代理模式基本介绍 代理模式的定义: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下&#xf…

【计算机网络复习】第四章 网络层 3

路由器的功能和层次 o 计算机网络的核心设备 o 具有多个输入接口和多个输出接口 o 任务是转发IP包&#xff1a;将从某个输入接口收到的I包&#xff0c;按照要去的目的地&#xff08;即目的网络&#xff09;&#xff0c;从路由器的某个合适的输出接口转发给下一跳路由器 …

将小米SoundMove 无缝接入 ChatGPT

将小米SoundMove 无缝接入 ChatGPT 本教程内容参考 Github 地址(可选)部署查看小米 SoundMove 信息的环境(可选)查看小米 SoundMove 的信息以容器方式部署程序到小米万兆路由器实际效果有待改善点 本教程内容 1 是记录了将小米 SoundMove 接入 ChatGPT 的操作步骤。 2 是将小米…

04-CSS3-渐变色、2D转换、3D转换

一、渐变色 CSS渐变色&#xff08;Gradient&#xff09;是指在元素背景中使用两种或多种不同的颜色进行过渡&#xff0c;超过两个颜色可以形成更为细腻的渐变效果。常见的CSS渐变色有线性渐变和径向渐变。 1. 线性渐变&#xff1a;Linear Gradients 向下/向上/向左/向右/对角…

异常处理错误

目录 1.异常的概念 2.异常的结构 3.异常的分类 3.1 受检查异常&#xff08;Checked Exception&#xff09; 3.2 运行时异常&#xff08;RunTime Exception&#xff09; 4.捕获异常 4.1 try块 4.2 catch捕获 5. 创建自定义异常 6. finally 7. 一些注意点 1.异常的概念…

Tensorflow2基础代码实战系列之双层RNN文本分类任务

深度学习框架Tensorflow2系列 注&#xff1a;大家觉得博客好的话&#xff0c;别忘了点赞收藏呀&#xff0c;本人每周都会更新关于人工智能和大数据相关的内容&#xff0c;内容多为原创&#xff0c;Python Java Scala SQL 代码&#xff0c;CV NLP 推荐系统等&#xff0c;Spark …

安捷伦DSO80404B(Agilent)dso80404b租售回收 数字示波器

DSO80404B 是 Agilent 的 4 GHz、4 通道数字示波器。测量电子电路或组件中随时间变化的电压或电流信号&#xff0c;以显示振幅、频率和上升时间等。应用包括故障排除、生产测试和设计。 附加功能&#xff1a; 4 GHz 带宽&#xff0c;可升级至 13 GHz 4个模拟通道 高达 40 G…