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

这篇具有很好参考价值的文章主要介绍了Vue3---什么是路由缓存问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

图例:从美食跳到服装

Vue3---什么是路由缓存问题,前端

 ​​​Vue3---什么是路由缓存问题,前端

 方案一:给router-view添加key

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

Vue3---什么是路由缓存问题,前端

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>

 文章来源地址https://www.toymoban.com/news/detail-557692.html

到了这里,关于Vue3---什么是路由缓存问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3+pinia用户信息持久缓存(token)的问题

    对博主来说,这是个相当复杂的问题。 当初在使用vue2+vuex进行用户信息持久登录时,写了不下3篇博客,确实是解决了问题,博客链接如下 vue存储和使用后端传递过来的token vue中对token的有效期的理解 vuex刷新页面丢失登录的token信息的解决方案 第一篇博客是记录前端如何使用

    2024年02月13日
    浏览(34)
  • 路由缓存问题 | vue-router的导航守卫

             带参路由,当 参数发生变化时,相同的组件实例将被复用 ,组件的 生命周期钩子不会被调用, 导致 请求不会被重新发送, 以至于 数据无法更新 。 两种解决方法: 1. 给 RouterView绑定key值 ,即 特点:不复用,破坏组件缓存,强制执行,存在一定的 浪费 ,即

    2024年02月09日
    浏览(41)
  • 【vue3】13-前端路由-Vue-Router的详解: 从入门到掌握

    路由其实是网络工程中的一个术语: 在 架构一个网络 时,非常重要的两个设备就是 路由器和交换机 。 当然,目前在我们生活中 路由器 也是越来越被大家所熟知,因为我们生活中都会用到 路由器 : 事实上, 路由器 主要维护的是一个 映射表 ; 映射表 会决定数据的流向; 路由

    2024年02月09日
    浏览(50)
  • Vue3对于一个前端来讲意味着什么?

    最近很多技术网站,讨论的最多的无非就是Vue3了,大多数都是Composition API和基于Proxy的原理分析。但是今天想着跟大家聊聊, Vue3对于一个低代码平台的前端更深层次意味着什么? 首先,Vue是前端三大主流框架之一,也是目前最火的一个前端框架。 Vue作为一套构建用户界面的

    2024年02月09日
    浏览(44)
  • 基于vscode开发vue3项目的详细步骤教程 3 前端路由vue-router

    1、Vue下载安装步骤的详细教程(亲测有效) 1_水w的博客-CSDN博客 2、Vue下载安装步骤的详细教程(亲测有效) 2 安装与创建默认项目_水w的博客-CSDN博客 3、基于vscode开发vue项目的详细步骤教程_水w的博客-CSDN博客 4、基于vscode开发vue项目的详细步骤教程 2 第三方图标库FontAwesome_水w的

    2024年02月02日
    浏览(71)
  • vue3前端开发,自学一下reactive,ref的差异是什么。

    vue3前端开发,自学,学习一下,reactive和ref的差别。以及基础用法。 前言,这2个东西,都能对外输出动态的数据对象。但是,有点区别,是,reactive只支持输入一个对象作为参数,ref则还可以支持简单的数据信息作为参数。待会有案例代码展示。 下面看看代码内容。第一个

    2024年01月18日
    浏览(53)
  • 关于vue3+niginx前端部署问题

    曾经有人给我讲,所谓个人技术是死磕出来的,只有经过不断的试错和解决过程所有问题,以及不断变换思路去解决一件问题的过程,就是个人技术的成长。 最近在给自己搭建的小服务加一个bolg模块,在网上大概看了下轻量级的框架,最后使用vueQuill富文本编辑器 ,期间产

    2024年02月12日
    浏览(42)
  • vue3 动态添加路由刷新后页面丢失(白屏)问题

    动态添加路由操作一般是用vuex或者Pinia封装,在登录页面调用 如果出现刷新页面丢失有两种可能: 1:vuex或者Pinia没有做持久化处理 2:动态添加路由需要在main.ts里面也调用一次 不需要路由守卫即可实现 注意:必须要在页面挂载前还有路由配置完成前调用添加,不然还是丢

    2024年02月16日
    浏览(56)
  • Vue3+Vue-Router+Element-Plus根据后端数据实现前端动态路由——权限管理模块

    提示:文章内容仔细看一些,或者直接粘贴复制,效果满满 提示:文章大概 1、项目:前后端分离 2、前端:基于Vite创建的Vue3项目 3、后端:没有,模拟的后端数据 4、关于路径“@”符号——vite.config.js 文件里修改 提示:以下是本篇文章正文内容,下面案例可供复制粘贴使用

    2024年02月02日
    浏览(64)
  • 解决vue3前端获取文件的绝对路径问题

    公司的项目是基于vue3的,由于需求需要前端获取用户选的文件的绝对路径。但是浏览器处于安全策略无法获取真实的文件路径,只能拿到相对路径或者是D:fakepathxxxx. 看了网上很多方法都很坑,明明没拿到路径非说拿到了,浪费了很多时间,这里要说单纯依靠vue是解决不了的

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包