vue中路由三种守卫方式

264 阅读1分钟

全局守卫

beforeEach:进入路由前执行

router.beforeEach((to, from, next) => {
  // to  去哪个路由
  // from 从哪个路由来
  //  next 执行
})

beforeResolve:同为进入路由前执行

区别在于解析所有路由组件,一个在之前,一个在之后。

router.beforeResolve((to, from, next) => {
  next();
});

afterEach:路由完成后执行

router.afterEach((to, from) =>{
   //   没有Next参数
})

路由守卫(进入某个路由执行)

export default [
  {
    path: '/login',
    component: Login,
    name: 'login',
    // 进入Login页面前执行的钩子函数
    beforeEnter (to, from, next) {
      console.log("Loginroute before enter")
      next();
    },
  },
]

组件守卫(进入某组件执行)

beforeRouteEnter:进入组件时

beforeRouteEnter(to, from, next) {
    next(()=>{
    //next里面有一个回到函数可以获取到上下文,把请求到的数据塞到vue对象中
    });
  },

beforeRouteUpdate:路由不变,传递的参数改变

根据不同传入参数,显示不同内容
  beforeRouteUpdate(to, from, next){
    next();
  },

beforeRouteLeave: 离开组件前

 beforeRouteLeave(to, from, next){
   // 表单验证跳转时,是否确认跳转
  },