路由守卫解析

路由守卫

  生命周期在创建到销毁的过程中执行。
  但是对于每次请求,都会有一部分被限制(登录请求)所以需要路由守卫。

路由全局守卫

全局前置路由守卫

import Vue from 'vue'
import VueRouter from 'vue-router'
import Index from '../components/Index.vue'

Vue.use(VueRouter)

//实例化router对象
const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes,
  linkActiveClass: 'active'
})
router.beforeEach((to,from,next)=>{
	//to是 要去的路由
	//from 从哪里去的
	if(to.path=="/index"){
		return next('/index')//如果要去index这个路由那么下一步就会到index这个路由
	}
	return next()//如果要去的不是index这个路由那么下一步该干嘛干嘛
})

全局解析守卫

与全局前置守卫类似,区别是在导航被确认之前同时所有组件内守卫路由与一步路由组件被解析之后,解析守卫就被调用。
router.beforeResolve

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

全局后置钩子

router.afterEach((to,from)=>{
	console.log("[2021-10-01 15:30:00]"+from.path+"To"+to.path)
	//写日志  2021-10-1 从某个路由到某个路由
})

路由独享守卫

beforeEnter

//在beforeEach之后运行,只单独对一个路由生效 写在路由规则中
const router = [
{
path: "/login",
component: ()=> import("../views/login.vue"),
meta: {
title: "登录"
},
beforeEnter(to,from,next){
if(from.path === "/sf"){ //从/sf这个路由来的就执行下一步否则还在该路由
next()
}else{
next("/sf")
}
console.log("beforeEnter+++++++++++++++++++++++++++++++++++")
console.log(to)
console.log(from)
next()
}
},
.......
{
path: "*",
component: ()=> import("../views/Page_404.vue")
}
] //路由的规则

组件内守卫

beforeRouterEnter
beforeRouterUpdate
beforeRouterLeave
每个组件守卫都有to,from,next三个参数
区别:
beforeRouterEnter 不能获取组件实例this ;实例组件还没有创建好;在渲染该组件的对应路由被confirm前调用;进入组件后就执行一般可以对用户的操作进行限制

beforeRouterUpdate 在当前路由改变 组件被复用时调用;可以访问this;在参数改变时调用同一个组件或路由时调用;在当前路由改变,检测提交的信息是否合法

beforeRouterLeave 导航离开该组件路由是调用;可以访问组件实例this;离开页面没有完成操作时提醒;写某个东西时离开未保存时触发

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值