vue页面跳转,$route 无法被监听

vue项目,从a路由跳转到b路由,在b路由对应的页面中监听$route,但是根本不会进断点?

a路由、b路由为两个不同的页面,路径也不同

b页面监听代码如下:

  watch: {
    '$route': {
      handler(to,from){
        debugger
        
      },
      deep: true
    }
  },

问题出在哪儿呢?

阅读 6.2k
4 个回答

这是正常的,从a路由跳转到b路由不会触发监听。你可以使用路由前置钩子或者加个immediate属性

$route 是 vue-router 挂载到 Vue.prototype 上的一个属性,而且只有 get 没有 set ,根本不能触发 watch

  Object.defineProperty(Vue.prototype, '$route', {
    get () { return this._routerRoot._route }
  })

而且是先有路由变化 routerView 去重新渲染组件 a / b ,路由变化的前后过程也不在组件存在的周期内

可以用路由守卫在单个页面或者在router.js都行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题