vue跳转时路由相同但参数不同

vue跳转时路由相同但参数不同

问题

在开发vue项目中遇到一个问题:两个导航共用一个显示界面,我打算通过路由传参的形式进行区别,利用vue的钩子,调用不同的查询接口:

// 错误示范
this.$router.push({ //导航一
    path: "/logindex",
     name:'logindex',
     params: { logType: 1 }
 });
 
 this.$router.push({ //导航二
    path: "/logindex",
     name:'logindex',
     params: { logType: 2 }
 });

但是我发现在两个导航之前切换时,vue不会重新加载组件,进而无法调用生命周期中的钩子,就导致页面数据无法更新。

解决

方案一:watch

第一步:改造路由

{
    path: '/logindex/:logType',
    name: 'logindex',
    component:()=>import('@/page/Logindex.vue')
}

跳转

this.$router.push({ //导航一
   	path: "logindex:logType",
    name:'logindex',
    params: { logType: 1}
});

this.$router.push({ //导航二
   	path: "logindex:logType",
    name:'logindex',
    params: { logType: 2 }
});

第二步:通过watch监听路由变化

data() {
    return {};
},
watch: {
    '$route':{
        handler(to) {
        	// to:目标路由对象
            this.loading(to.params.logType);//查询数据
        }
    }
},
methods: {}

方案二:beforeRouteUpdate

第一步:同方案一第一步;
第二步:通过路由钩子beforeRouteUpdate监听路由变化

data() {
    return {};
},
beforeRouteUpdate (to, from, next) {
	// to:目标路由对象
	// from:原路由对象
	// next:可指定路由进行跳转
   next();
   this.loading(to.params.logType);//查询数据
   
},
methods: {}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值