vue router 相同组件跳转 beforeRouteEnter 没有触发问题

有一个组件 good , 和 id 组成 url /good/:id

发现

/good/1
/good/2
/good/3

别的界面跳转进来的时候可以触发 beforeRouteEnter, 但是互相间跳转的时候并没有触发,只触发了全局的 beforeEach, 为啥会这样。怎样能,能检测到相同组件间的跳转。

  • keep-alive 已经关了

  • 生命周期也都不会触发

        beforeUpdate(){
            debugger
        },
        updated(){
            debugger
        },
        activated(){
            debugger
        },
        deactivated(){
            debugger
        },
阅读 17.7k
4 个回答

用这个钩子函数,组件复用是会调用

 beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  }
export default {
    watch: {
        '$route.params.id': function (id) {
            this.fetchGoodDetail(id);
        }
    },
    // 或者
    route: {
        canReuse: false
    }
}

感觉你这种形式的都是指向的同一个路由/grood/:id吧

前些天刚刚搞定了这个问题
clipboard.png
你在这个页面监听下路由,然后有变化,把页面初始化就行了,稳,走你

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