Vue3---什么是路由缓存问题

news2024/9/22 21:35:21

使用带有参数的路由时需要注意的是,当用户从 /users/johnny 导航到 /users/jolyne 时,相同的组件实例将被重复使用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会被调用。

问题:一级分类的切换正好满足上面的条件,组件实例复用, 导致分类数据无法更新
解决问题的思路:1. 让组件实例不复用,强制销毁重建 2. 监听路由变化,变化之后执行数据更新操作。

图例:从美食跳到服装

 ​​​

 方案一:给router-view添加key

以当前路由完整路径为key的值,给router-view组件绑定

key也可以用于强制替换一个元素/组件而不是复用它。当你想这么做时它可能会很有用:

  • 在适当的时候触发组件的生命周期钩子
  • 触发过渡

缺点:组件内所有请求都会发送

 方案二:使用beforeRouteUpdate导航钩子

beforeRouteUpdate钩子函数可以在每次路由更新之前执行,在 回调中执行需要数据更新的业务逻辑 即可
<script setup>
import {getCategoryAPI} from "@/apis/category"
import { onMounted, ref} from "vue";
import {onBeforeRouteUpdate, useRoute} from "vue-router";
import GoodsItem from "@/views/Home/components/GoodsItem.vue";
// 面包屑
const categoryData = ref({})
const route = useRoute()
// 如果传参数了,就为to.params.id ,如果没有传就为route.params.id
const getCategory = async (id = route.params.id) => {
    // const res = await getCategoryAPI(route.params.id)
    const res = await getCategoryAPI(id)
    categoryData.value = res.result
}
onMounted(() => getCategory())

// 方法二:路由参数发生变化时,分类接口重新发送
onBeforeRouteUpdate((to) => {
    // console.log('路由发生变化了')
    console.log(to)
    getCategory(to.params.id)
})
</script>

 

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

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

相关文章

500万PV的网站需要多少台服务器?

1. 衡量业务量的指标 衡量业务量的指标项有很多&#xff0c;比如&#xff0c;常见Web类应用中的PV、UV、IP。而比较贴近业务的指标项就是大家通常所说的业务用户数。但这个用户数比较笼统&#xff0c;其实和真实访问量有比较大的差距&#xff0c;所以为了更贴近实际业务量及压力…

什么是提示工程?

原文链接&#xff1a;芝士AI吃鱼 理解大规模人工智能模型为何如此行事是一门艺术。即使是最有成就的技术专家也会对大型语言模型 (LLM) 的意想不到的能力感到困惑&#xff0c;大型语言模型是ChatGPT等人工智能聊天机器人的基本构建模块。 因此&#xff0c;提示工程成为生成式 …

特征选择算法 | Matlab 基于最大互信息系数特征选择算法(MIC)的分类数据特征选择

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 特征选择算法 | Matlab 基于最大互信息系数特征选择算法(MIC)的分类数据特征选择 部分源码 %--------------------

python 常用数据结构-列表

list 列表 列表定义与使用列表常用方法列表嵌套列表推导式 列表定义 列表是有序的可变元素的集合&#xff0c;使用中括号[]包围&#xff0c;元素之间用逗号分隔 列表是动态的&#xff0c;可以随时扩展和收缩 列表是异构的&#xff0c;可以同时存放不同类型的对象 列表中允…

阶乘后的零(力扣)数学 JAVA

给定一个整数 n &#xff0c;返回 n! 结果中尾随零的数量。 提示 n! n * (n - 1) * (n - 2) * … * 3 * 2 * 1 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;0 解释&#xff1a;3! 6 &#xff0c;不含尾随 0 示例 2&#xff1a; 输入&#xff1a;n 5 输出&…

WSL2 及 docker开发环境搭建

WSL2 及 docker开发环境搭建 1.使能WSL 控制面板->程序->程序和功能->启动或关闭Windows功能->勾选红框中选项->确认后重启电脑 &#xfeff; 2.下载Linux Kernel Update安装包 下载地址如下&#xff0c; 附件已将下载的安装包作为附件形式上传&#xff0c;…

ITIL 4服务连续性管理实践

一、目的和描述 关键信息 服务连续性管理实践的目的是确保灾难发生时&#xff0c;服务的可用性和性能能够保持在足够的水平。本实践提供了一个框架机制&#xff0c;利用产生有效响应的能力来构建组织的弹性&#xff0c;以保障关键利益相关者的利益&#xff0c;还有组织的声誉…

element 封装dialog弹窗组件鼠标移动到弹窗出现title

问题&#xff1a; element 封装dialog弹窗组件鼠标移动到弹窗出现title 封装的组件 <template><el-dialog title"111"v-bind"$attrs" v-on"$listeners" :visible.sync"show" ></el-dialog> </template><s…

02-webpack的热更新是如何做的,以及原理

一、是什么 HMR 可以理解为模块热替换&#xff0c;指在应用程序运行过程中&#xff0c;替换、添加、删除模块&#xff0c;而无需重新刷新整个应用. 如&#xff0c;我们在应用运行过程中修改了某个模块&#xff0c;通过自动刷新会导致整个应用的整体刷新&#xff0c;那页面中的…

pygame伪3d 实现地面效果

教程来自What is Mode 7? Let’s code it! 油管镜像 import cv2 import pygame import sys from pygame import gfxdraw import numpy as np(width, height) (800, 600) pygame.init() screen pygame.display.set_mode((width, height)) image pygame.image.load("11…

ElasticSearch基础学习(SpringBoot集成ES)

一、概述 什么是ElasticSearch&#xff1f; ElasticSearch&#xff0c;简称为ES&#xff0c; ES是一个开源的高扩展的分布式全文搜索引擎。 它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。 ES也…

什么是API接口?主要作用是什么?

API英文全称为&#xff1a;Application Programming Interface&#xff0c;中文意思是应用程序编程接口&#xff0c;它是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力。 主要作用&#xff1a; API之主要目的是提供应用程…

【笔记】Pycharm配置Node.js运行js代码

最近在学习关于Js逆向的知识&#xff0c;需要在PyCharm中运行Js程序&#xff0c;记录一下配置过程。 安装Node.js Node.js中文网 选择自己电脑对应的安装包下载暗转即可 安装好软件后&#xff0c;配置node.js环境变量。 完成安装和环境配置后&#xff0c;打开cmd测试是否安…

解决 idea 中使用 git 提交显示多余空行

解决 idea 中使用 git 提交显示多余空行 1、问题描述2、解决方法 欢迎访问我的个人博客&#xff1a;https://wk-blog.vip 1、问题描述 在 idea 中使用Git提交代码时&#xff0c;发现不管是对于代码文件还是其他纯文本文件&#xff0c;在保存时总会在文件末尾加上一个空行&…

网络应用基础 TCPIP协议(NETBASE第四课)

网络应用基础 TCPIP协议&#xff08;NETBASE第四课&#xff09; TCP/IP 百度百科 CP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff0c;传输控制协议/网际协议&#xff09;是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是T…

【Excel经验】日期时间处理方法

概览-公式汇总 公式功能公式公式说明提取时间中的日期TEXT(A2,“yyyy-mm-dd”)A2列数据格式样例&#xff1a;2023/7/5 6:20:10计算耗时得到单位&#xff1a;秒数VALUE(TEXT(B2-A2,“[ss]”))A2、B2列数据格式样例&#xff1a;2023/7/5 6:20:10计算耗时得到格式化显示年月日B2-…

基础算法-子矩阵的和

1 课堂笔记 2 代码 3.代码解析 #include<iostream> using namespace std; const int maxn1010; int a[maxn][maxn],s[maxn][maxn]; int n,m,q,x1,y1,x2,y2;int main(){scanf("%d%d%d",&n,&m,&q);//为数组赋值for(int i1;i<n;i){for(int j1;j&…

Mycat【Mycat分片规则(按日期(天)分片、全局序列)、Mycat高可用(Mycat高可用概述)】(七)-全面详解(学习总结---从入门到深化)

目录 Mycat分片规则_按日期&#xff08;天&#xff09;分片 Mycat分片规则_全局序列 Mycat高可用_Mycat高可用概述 Mycat分片规则_按日期&#xff08;天&#xff09;分片 实现原理 此规则为按天分片&#xff0c;设定时间格式、范围。 实现过程 创建示例表 #用户信息表 …

Linux时间子系统

转自&#xff1a;深入理解Linux时间子系统(0.7)_城中之城的博客-CSDN博客 一、时间概念解析 我们住在空间里&#xff0c;活在时间中。时间对我们来说是既熟悉又陌生。熟悉是因为我们每天都在时间的驱动下忙碌着&#xff0c;陌生是因为我们从来没有停下来认真思考过时间是什么…

C++内存泄露排查的一个案例

背景: 这熟悉的线条. 请求量没啥波动, 不用怀疑, 就是内存泄露了. 方案一 Valgrind Valgrind可以用来检测是否有非法使用内存的问题, 如: 访问未初始化的内存,访问数组越界, 忘记释放动态内存的问题; 首先需要定位是哪个进程的内存泄露. 使用top命令, 然后shiftm按照内存排序…