vue-router参数变化更新页面问题

本文探讨了在Vue Router中遇到动态路径参数变化时页面未更新的问题。当从'/user/123'跳转到'/user/111',由于组件复用,mounted生命周期钩子不会再次执行。解决方法包括在vue-router版本低于2.2时使用watch监听路由,或在2.2及以上版本利用beforeRouteUpdate守卫函数。通过这些方法,可以在参数变化时确保页面正确更新。
摘要由CSDN通过智能技术生成

vue-router参数变化更新页面问题

我们在做项目的过程中经常会用到路由的模式匹配,例如对于不同的用户所使用的组件相同,我们不必为每个用户设置一个路径。此时,动态路径参数就能帮助我们达到这个效果。

相信下面的代码你一定见过

const router = new VueRouter({
  routes: [
    // 动态路径参数 以冒号开头
    { path: '/user/:id', component: User }
  ]
})

这样写不管是’/user/123’还是’/user/111’都会被匹配到,接着就会渲染User模板,这里的User可以引用自其它模块也可以是在该页面使用template生成的简单的模板。

想要获取页面路径中的参数id也很简单,使用

this.$router.params.id

如果你在页面中声明了router那么this.$router 和 router 使用起来完全一样。,上面的代码可以写成

router.params.id

动态路径参数使用简单方便,但是也要注意一点,如果直接从参数匹配跳转到另一个参数匹配,例如从’/user/123’到’/user/111’组件并不会被销毁,因为他们使用相同的组件,为了提高利用率组件会被复用,不用销毁后重新创建,也就导致了生命周期函数钩子在路径跳转时不会再次被调用。而我们很多初始化的操作会放在mounted函数里面,此时他们就会静静躺着什么也不会做,知道使用其他组件后再次来到该页面。

官方给出的解决方案有两种,如果vue-router版本低于2.2使用watch监听函数监听路由变化

const User = {
  template: '...',
  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值