vue-query 初探

news2024/11/17 15:57:34

vue-query,类似于vuex/pinia,以缓存为目的,但侧重的是对网络请求的缓存。
这是我预想的使用场景:假设在各个页面都需要发起相同的请求,去获取数据,而这种数据在一定时间内不会发生变化,那么这种请求数据是可以被缓存下来的。
当然,用法不止于此,你也可以去缓存分页数据、查询数据…
vue-query官方文档

注意:以下示例为vue3.2 + ts,vue-query同样也支持vue2

安装与引入

  • npm install vue-query -S
  • 在main文件中引入:
import { VueQueryPlugin } from 'vue-query'
import App from './App.vue'
const app = createApp(App)
app.use(VueQueryPlugin).mount('#app')

简单使用

  • 先写一个Promise,用于模拟请求返回数据
interface response {
    test: string
}
const myPromise = (): Promise<response> => {
	console.log('myPromise执行')
    return new Promise((resolve) => {
      resolve({ test: 'test' })
    })
}
  • 然后在.vue文件中
<script setup lang="ts">
  import { useQuery } from 'vue-query'
  const { data } = useQuery('myCacheKey', myPromise)
  setTimeout(() => {
    console.log('queryData', queryData.value?.test)
  }, 500)
</script>

显示该页面后,控制台就会把test输出,此时vue-query返回的data已经是ref包装过的了,也就是说是响应式的。

  • 如果有Vue.js devtools(浏览器插件),就可以看到数据已经被缓存下来。
    在这里插入图片描述
    你可能会发现,控制台中输出了不止一次myPromise执行,我们用useQuery的配置项去解决。
    在这里插入图片描述

UseQueryOptions

基本需要两个参数,修改代码如下:

const { data } = useQuery('myCacheKey', myPromise,{
    cacheTime: Infinity,
    staleTime: Infinity,
})

cacheTime不设置目前不清楚是否有雷,staleTime是关键,在页面重新获取焦点和切换路由后,在有缓存的情况下,不会再发起请求,当然页面重新获取焦点和切换路由也有单独的键进行控制–refetchOnWindowFocusrefetchOnMount,值为布尔值。

至此,已实现开头所描述的使用场景。

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

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

相关文章

【JavaWeb】带你走进Maven

文章目录1 什么是Maven?2 Maven 常用命令3 Maven 生命周期4 Maven 坐标详解5 IDEA 导入 Maven 项目1 什么是Maven? 如今我们构建一个项目需要用到很多第三方的类库&#xff0c;如写一个使用Spring的Web项目就需要引入大量的jar包。一个项目Jar包的数量之多往往让我们瞠目结舌…

线程execute()与submit()区别

线程池中有两个提交任务的方法 向线程池提交任务的两种方式大致如下&#xff1a; 方式一&#xff1a;调用execute()方法 方式二&#xff1a;调用submit()方法 一、区别 以上的submit()和execute()两类方法的区别在哪里呢&#xff1f;大致有以下三点&#xff1a; 1.二者所接收…

引入“ 自动化测试 ”都需要满足哪些条件?

&#x1f4cc; 博客主页&#xff1a; 自动化软件测试 &#x1f4cc; 专注于软件测试领域相关技术实践和思考&#xff0c;持续分享自动化软件测试开发干货知识&#xff01; &#x1f4cc; 如果你也想学习软件测试&#xff0c;文末卡片有我的交流群&#xff0c;加入我们&#xff…

由浅入深,聊聊 LeakCanary 的那些事

引言 关于内存泄漏&#xff0c;Android 开发的小伙伴应该都再熟悉不过了&#xff0c;比如最常见的静态类间接持有了某个 Activity 对象&#xff0c;又比如某个组件库的订阅在页面销毁时没有及时清理等等&#xff0c;这些情况下多数时都会造成内存泄漏&#xff0c;从而对我们Ap…

linux内核-内存管理

linux内核内存管理 注意&#xff01;内核空间和用户空间都是处于虚拟空间中 Linux的虚拟地址空间范围为0&#xff5e;4G&#xff0c;Linux内核将这4G字节的空间分为两部分 内核空间&#xff1a; 最高的1G字节&#xff08;从虚拟地址0xC0000000到0xFFFFFFFF&#xff09;&…

RTSP,RTP,RTCP协议

一 RTSP 1 简介 实时流传输协议&#xff0c;是一个应用层协议&#xff08;TCP/IP网络体系中&#xff09;&#xff0c;它是一个多媒体播放控制协议&#xff0c;主要用来使用户在播放流媒体时可以像操作本地的影碟机一样进行控制&#xff0c;即可以对流媒体进行暂停/继续、后退和…

SAP FICO 关于资产的详细解析

SAP资产模块概述 一、概述 资产&#xff08;AA&#xff09;模块是资产会计模块的简称&#xff0c;是财务会计&#xff08;FI&#xff09;模块的一个子模块&#xff0c;主要处理与各类长期资产相关业务的模块。不单指固定资产&#xff0c;也不泛指资产负债表中的资产&#xff0c…

Week4

1.试题 历届真题 时间显示【第十二届】【省赛】【B组】 思路 不难发现,应该从小时往秒处理,这样可以用O(1)的时间复杂度求出,不过有比较麻烦的进位处理。 先看里面可以拼成几个小时,然后得到的小时%24,然后把总时间减去小时的时间,再看有多少分钟,分钟%60,都是此时判断分…

vue多环境配置之 .env配置文件

Vue之.env环境配置文件 .env文件是运行项目时的环境配置文件。但是在实际开发过程中&#xff0c;有本地环境、测试环境、预生产、生产环境等等&#xff0c;不同环境对应的配置会不一样。因此&#xff0c;需要通过不同的.env文件实现差异化配置。 * 文章目录Vue之.env环境配置文…

【JAVA核心知识】46:什么是零拷贝Zero-copy

零拷贝相较于传统的IO流程拥有更高的数据发送效率&#xff0c;无论是RocketMq,Kafka还是Netty等都用到了零拷贝技术&#xff0c;那究竟什么是零拷贝呢&#xff0c;零拷贝又是通过什么方式提升数据发送效率呢&#xff1f; 首先我们要明白&#xff0c;一次数据发送过程就是将磁盘…

Java基础--方法

前言&#xff1a;介绍 Java 中方法的基本语法、分类、执行并分析参数传值。 关键字&#xff1a;方法、形参、实参、返回值、实例方法、静态方法、参数传值 程序引例–为什么要「方法」 public class IntroduceOfMethod {// 入口主方法。public static void main(String[] args…

docker 高级篇

一、DockerFile 1.1、概述 dockerfile 是用来构建docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本。 为什么要有dockerfile呢 在基础篇我们讲过&#xff0c;比如我们下载个 ubuntu镜像里面不包含 vim、ifconfig等组件&#xff0c;这个时候 新增…

DES加密算法

DES算法原理 对称密码算法中的分组加密算法&#xff08;对应于流密码&#xff09; 密钥64位&#xff0c;56位参与运算8位校验位&#xff08;校验位为&#xff1a;8、16、24、32、40、48、56、64&#xff09; 加密原理 1. IP置换 将明文数据转化为二进制数&#xff0c;并将它…

Lnix文件权限的修改

首先我们要清楚Linux文件的权限信息 在Linux中输入ls -l 或者 ll查看文件和目录的详细信息 文件详情实例中&#xff0c;a目录的第一个属性用“d”标识这个a是一个目录。 anaconda-ks.cfg第一个属性用“-”标识他是一个文件。 在Linux文件详情的后面属性需要分为三组查看 rwx&am…

三种调用机制: 同步调用、异步调用、回调(同步/异步)

c并发编程-01-并发与并行_发如雪-ty的博客-CSDN博客 c并发编程02-什么是I/O_发如雪-ty的博客-CSDN博客 c并发编程03-I/O多路复用_发如雪-ty的博客-CSDN博客 c并发编程04-同步与异步_发如雪-ty的博客-CSDN博客_c同步和异步 c并发编程05-什么是回调函数_发如雪-ty的博客-CSDN…

Web前端:使用ReactJS构建的应用类型

使用ReactJS&#xff0c;你可以构建各种各样的应用程序&#xff0c;包括单页应用程序、渐进式web应用程序、移动应用程序、仪表板、电子商务平台、企业web应用程序以及社交媒体和消息应用程序。1.单页应用程序(spa)单页应用程序(SPA)基本上是一个网页&#xff0c;它通过使用从w…

MySQL(七):undo日志——保证事务的原子性

目录一、前言1.1 如何回滚事务1.2 事务id1.3 roll pointer 隐藏列1.4 trx_id 隐藏列二、undo日志2.1 undo日志的格式2.2 insert 对应的undo日志2.3 delete 操作对应的undo日志2.4 update操作对应的undo日志2.5 Undo页面链表2.6 undo日志写入过程2.6.1 Undo Log Header2.7 回滚段…

springboot请求参数绑定原理篇

上篇文章写了SpringBoot 参数接收只看这一篇文章就够了&#xff0c;只是写了使用方法&#xff0c;没有写为什么&#xff0c;原理是什么&#xff0c;这篇文章也是之前的预先的计划&#xff0c;稍微花点时间整理下&#xff0c;知其然知其所以然&#xff0c;才算是能彻底掌握&…

如何用IDEA创建SpringBoot项目

一、创建一个 Spring Initializr 工程 next后选择2.7.8版本&#xff0c;勾选以下几个 Web里的spring bootTemplate Engines 里的 ThymeleafSQL里的MyBatis Framework 和 Mysql Driver 然后finish完成 二、配置resources文件 2.1、 application.properties&#xff1a; #??…

Docker容器命令无权限,WEB访问403

问题背景(描述) 部署dockerWeb后&#xff0c;重启访问403,详细如下 docker容器正常运行,且开机自启 #通过如下命令开机自启 docker update --restart always 容器id但是访问web服务出现403. 进入容器后,输入命令提示如下: 解决方案 关闭selinux SELinux(Security-Enhanced…