vue-router beforeRouteEnter()函数 next回调没有执行,怎么回事?

beforeRouteEnter (to, from, next) {
    next(vm => {
        console.log(vm.data);
    });
}

next()回调没有执行?

阅读 14.1k
5 个回答

从你给出的代码看不出什么问题。这个函数你是写在哪的?next 之外 to, from 能正确打印吗?

官方的示例,你看看,对比一下自已写的是哪里出问题了:

https://github.com/vuejs/vue-...

VueJS文档:https://router.vuejs.org/en/a...

const Foo = {
    template: `...`,
    beforeRouteEnter (to, from, next) {
    }
}

需要把beforeRouteEnter写在路由组件定义里,你可能是直接写到全局了所以没用。

请问楼主问题解决了吗?

我也写在了export中了,但是beforeRouteEnter并没有起作用,to和from不能打印出来,楼主可以吗?

新手上路,请多包涵

1. beforeRouteEnter(to, from, next) {} 这个玩意儿,只在当前进入的路由页面生效。

   如果你的返回按钮是在其他组件,如:<my-header></myheader>中,那么抱歉,你的beforeRouteEnter都执行不到。

2. beforeRouteEnter(to, from, next) {

// 你在此处打印data中的数据,会无情反你错误。
// 官网解释:(beforeRouteEnter 守卫不能访问this,因为守卫在导航确认前被调用,因此即将登场的新组件还没被创建。)
next(vm => {
    // 正确方式
    console.log(vm.data);
});

}

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