vue中如何等app.vue中的js方法执行后再执行其他加载的组件的方法

目前项目中需要用户不管从哪个页面进来,第一步都需要判断token是否过期,如果过期需要去后端重新请求;
我是打算在入口组件app.vue中进行判断,如果过期就会去ajax请求token,可是还没等到我token回来,首页的组件就加载了,然后导致首页中的接口报错了(token过期的错误),所以如何等我app.vue里的结果返回再去挂载组件呢?
正愁呢!

阅读 9.8k
1 个回答

应该在全局路由入口处拦截,而不是入口组件。

可以使用vue-router的beforeEach导航钩子进行全局路由拦截,如:

const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
  if(tokenExprise){
    next()
  } else {
   // 刷新 token 
    reflashToken().then(()=>{
      next()
    })
  }
})

希望有帮助.

参见导航守卫

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