vue项目,从a路由跳转到b路由,在b路由对应的页面中监听$route
,但是根本不会进断点?
a路由、b路由为两个不同的页面,路径也不同
b页面监听代码如下:
watch: {
'$route': {
handler(to,from){
debugger
},
deep: true
}
},
问题出在哪儿呢?
vue项目,从a路由跳转到b路由,在b路由对应的页面中监听$route
,但是根本不会进断点?
a路由、b路由为两个不同的页面,路径也不同
b页面监听代码如下:
watch: {
'$route': {
handler(to,from){
debugger
},
deep: true
}
},
问题出在哪儿呢?
$route
是 vue-router 挂载到 Vue.prototype 上的一个属性,而且只有 get 没有 set ,根本不能触发 watch
Object.defineProperty(Vue.prototype, '$route', {
get () { return this._routerRoot._route }
})
而且是先有路由变化 routerView 去重新渲染组件 a / b ,路由变化的前后过程也不在组件存在的周期内
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
这是正常的,从a路由跳转到b路由不会触发监听。你可以使用路由前置钩子或者加个immediate属性