路由守卫beforeEach,beforeResolve,afterEach

index.js
router.beforeEach((to, from, next) => {
  console.log('before each invoked');
  if (to.fullPath === '/app') {
    // next('/login')//不仅可以写字符串还可以是一个对象
    next({path: '/login', replace})
  } else {
    next()
  }
});
router.beforeResolve((to, from, next) => {
  console.log("before resolve invoked")
  next();
});
router.afterEach((to, from) =>{
  console.log("after invoked")
})

路由守卫常用于路由跳转判断是否需要登录等,如果需要就跳转到登录页面

vue的另外一个钩子函数 beforeEnter

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

用于组件内部的钩子

export default{
//  从另外的组件进入该组件前触发该钩子
beforeRouteEnter(to, from, next) {
    console.log("todo before enter");
    console.log(this) // 这里获取不到上下文
    next(vm => { // next里面有一个回到函数可以获取到上下文,把请求到的数据塞到vue对象中
      console.log(vm.id)
      console.log(vm.msg)
      vm.test();
    });
  },
//  同一个组件,param不同的是触发,常用与同一个组件当传入不通参数时,展示不同的数据
  beforeRouteUpdate(to, from, next){
    console.log("todo update enter")
    next();
  },
//  该组件离开跳转到另外的组件时触发该钩子,常应用于用户表单,当用户填了一部分内容,需要提醒用户是否离开页面
 beforeRouteLeave(to, from, next){
    console.log("todo leave enter")
    if(global.confirm('are you sure')){
      next();
    }
  },
  data(){
     return{
  }
}
}
特别注意:beforeRouteUpdate的触发条件
image.png

image.png

当从app123,跳转到app456的时候就会触发beforeRouteUpdate

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 组件相关钩子函数: beforeCreate、created、beforeMount、mounted、before...
    744354889606阅读 19,239评论 0 37
  • 一:什么是闭包?闭包的用处? (1)闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就 是将函数内部和函数外...
    xuguibin阅读 13,305评论 1 52
  • 原文链接:https://github.com/halfrost/Halfrost-Field/blob/mast...
    hament阅读 10,992评论 1 31
  • vue-cli搭建项目 确保安装了node与npm 再目标文件夹下打开终端 执行cnpm i vue-cli -g...
    Akiko_秋子阅读 8,511评论 1 22
  • 在使用 Vue 或者 Angular 的时候,框架提供了路由守卫功能,用来在进入某个路有前进行一些校验工作,如果校...
    柏丘君阅读 34,752评论 12 32

友情链接更多精彩内容