题目描述
根组件tab切换,watch监听路由会触发,但是beforeRouteUpdate不触发
相关代码
<footer class="tabBar">
<router-link to='/home'>
<span>首页</span>
</router-link>
<router-link to='/noticeCenter'>
<span>通知中心</span>
</router-link>
<router-link to='/myCenter'>
<span>我</span>
</router-link>
</footer>
<router-view></router-view>
export default {
data() {
return {};
},
methods: {}
},
watch: {
$route(to, from) {
console.log(to);
console.log(from);
}
}
beforeRouteUpdate(to, from, next) {
console.log(to);
console.log(from);
next();
}
};
routes: [
{ path: '/', redirect: '/home' },
{ path: '/home', component: home }, //首页
{ path: '/noticeCenter', component: noticeCenter }, //通知中心
{ path: '/myCenter',name: 'myCenter',component: myCenter } //我
]
官方对于beforeRouteUpdate的解释如下:
不能触发的原因可以看注释的第二、三行,只有动态参数的路径(/foo/1 和 /foo/2这样),才会调用。
我尝试对router动态处理
这个场景下,beforeRouteUpdate成功触发。
你可以考虑修改你的router-link写法,加个参数,代码示例如下:
当然,最主要的是,这个方法是组件内的导航守卫,切换路由组件,按你目前的代码功能来看,如果想触发,
除了router-link要带参数,还需要修改router-view