vue路由组件缓存问题

在Vue中,当切换带有参数的路由时,相同的组件可能被复用导致数据不刷新。解决方法包括设置路由出口的key属性为路由完整路径,强制组件销毁重建,或者利用BeforeRouteUpdate钩子函数在路由变化时更新数据。
摘要由CSDN通过智能技术生成

什么事路由缓存问题

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

我遇到的情况

这个是我点击居家的时候,地址是category/1005000

在这里插入图片描述

然后我点击美食

在这里插入图片描述

这个时候你会发现,你当前页面下的数据不会刷新,组件的生命周期钩子函数也没有调用,这种情况就是上面的组件缓存问题

解决方法

1.在路由出口处:<RouterView :key="$route.fullPath" />
$route.fullPath 路由的完整路径,包含参数部分
key最常见还是和v-for来一起使用
也可以用于强制替换一个元素/组件而不是复用它。当你想这么做时它可能会很有用:
在适当的时候触发组件的生命周期钩子
触发过渡

2.使用组件内的BeforeRouteUpdate函数,在组件发生变化的时候,重新调用你的接口

onBeforeRouteUpdate((to, from, next) => {
  // 调用你的接口更新数据
});

第一个解决方法 是让组件不复用,直接强制销毁
第二种解决方法 比较灵活,性能也比较好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值