当前位置: 首页 > news >正文

vue路由缓存问题

什么是路由缓存问题

解决方案:

  1. 让组件实例不再复用,强制销毁重建
  2. 监听路由变化,变化之后执行数据更新操作

方法一

给 routerv-view 添加key属性,强制不添加缓存,破坏缓存,所以这个方法性能会比较差

<RouterView :key="$route.fullPath"/>

方法二

使用 onBeforeRouteUpdate钩子函数,做精确更新

没用onBeforeRouteUpdate前的渲染

//获取组件内部的路由参数,用useRoute
const route = useRoute()
const categoryData = ref([])
const getCategory = async ()=>{// 如何在setup中获取路由参数 useRoute() -> route 等价于this.$routeconst res = await getTopCategoryAPI(route.params.id)categoryData.value = res.result
}
onMounted(()=>getCategory())

用onBeforeRouteUpdate后

//获取组件内部的路由参数,用useRoute
const route = useRoute()
const categoryData = ref([])//如果调用该函数时没有传入 id,则默认使用 route.params.id 的值。
const getCategory = async (id = route.params.id)=>{// 如何在setup中获取路由参数 useRoute() -> route 等价于this.$routeconst res = await getTopCategoryAPI(id)categoryData.value = res.result
}
onMounted(()=>getCategory())onBeforeRouteUpdate((to)=>{//to 是即将进入的路由对象getCategory(to.params.id)
})


http://www.mrgr.cn/news/46255.html

相关文章:

  • 【springboot入门之YAML使用】
  • 非刚性点云配准 Non-rigid registration of two surfaces.SHREC 14 Human 数据集
  • 一键从想法到上线:Bolt.new重新定义全栈开发流程
  • ubuntu22.04的wayland协议修改掉,因为很多软件不支持
  • [vue/no-use-v-if-with-v-for] v-for 和 v-if 在同一个元素中的处理方法
  • Java中System类和RunTime类的Api
  • HTML5实现古典音乐网站源码模板1
  • 洞察AI趋势:智享AI直播,打造专属你的数字化直播AIGC系统!
  • 【JavaScript】事件 - 实现元素拖拽至画布
  • linux 禁用ipv6
  • Nacos 与 Eureka、Zookeeper 和 Consul 等其他注册中心的区别
  • WEB安全该学习哪些知识
  • 11、论文阅读:无监督夜间图像增强:层分解与光效抑制的结合
  • Qt C++设计模式->中介者模式
  • 带你了解linux:学习第十二课 linux 之 sort
  • 抓包工具检测手把手教学 - 某招聘网站
  • 详情说明HTTP/2和HTTP/3两者间的区别
  • python-读写Excel:openpyxl-(3)单元格样式设置
  • 第27周:Transformer实战:文本分类
  • Python(十)-面向过程,面向对象,类和对象