路由守卫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的触发条件
在这里插入图片描述
在这里插入图片描述
当从app123,跳转到app456的时候就会触发beforeRouteUpdate


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部