vue-router 的beforeRouteEnter 获取不到请求数据问题

新手上路,请多包涵

按着官方文档的用法来使用

beforeRouteEnter (to, from, next) {
  next(vm => {
    // 通过 `vm` 访问组件实例
  })
}

consloe.log(vm)的时候能看到里面的数据

image.png

console.log(vm.userMessage)的时候就获取不到了

image.png

userMessage是我从请求中返回的数据

如果我访问data里已经有了的数据都话却又能访问成功,这是为什么呢?
比如说
cosole.log(navArr)
image.png

image.png

阅读 3.9k
1 个回答

你的数据是异步获取的,路由刚进入的时候,请求还没回来(甚至可能还没发出,next可能早于created被调用,要看源码),那当然拿不到数据。

而打印vm,只是打印它的引用,而它的字段,都被vue处理成响应式数据,你不去获取,就不会有值。而等到你点开里面的userMessage,这时候数据已经回来了。

你可以用watch监视userMessage来实现你的需求

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