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

佐手、 提交于 2020-02-26 15:56:24

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: {}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!