web前端全系列 教程
1839个小节阅读:2243.1k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。这里有很多方式植入路由导航中:全局的,单个路由独享的,或者组件级的
你可以使用 router.beforeEach
注册一个全局前置守卫,当一个导航触发时,就会触发全局前置守卫
xxxxxxxxxx
router.beforeEach((to, from, next) => {
// 返回 false 以取消导航
next()
})
你可以用 router.beforeResolve
注册一个全局守卫。这和 router.beforeEach
类似
xxxxxxxxxx
router.beforeResolve((to,from,next) => {
next()
})
你可以直接在路由配置上定义 beforeEnter
守卫,在导航结束之后触发
xxxxxxxxxx
router.afterEach((to,from) => {
})
你可以直接在路由配置上定义 beforeEnter
守卫,beforeEnter
守卫 只在进入路由时触发
xxxxxxxxxx
{
name: "List",
path: "/list",
component: List,
beforeEnter:(to,from) => {
return true;
}
}
你可以在路由组件内直接定义路由导航守卫
beforeRouteEnter
beforeRouteUpdate
beforeRouteLeave
xxxxxxxxxx
<template>
<h3>Home首页</h3>
</template>
<script>
export default {
beforeRouteEnter(to, from){
// 在渲染该组件的对应路由被验证前调用
// 不能获取组件实例 `this` !
// 因为当守卫执行时,组件实例还没被创建!
console.log(to,from)
},
beforeRouteUpdate(to,from){
// 在当前路由改变,但是该组件被复用时调用
// 举例来说,对于一个带有动态参数的路径 `/users/:id`,在 `/users/1` 和 `/users/2` 之间跳转的时候,
// 由于会渲染同样的 `UserDetails` 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
// 因为在这种情况发生的时候,组件已经挂载好了,导航守卫可以访问组件实例 `this`
},
beforeRouteLeave(to,from){
// 在导航离开渲染该组件的对应路由时调用
// 与 `beforeRouteUpdate` 一样,它可以访问组件实例 `this`
}
}
</script>
beforeRouteLeave
守卫。beforeEach
守卫。beforeRouteUpdate
守卫(2.2+)。beforeEnter
。beforeRouteEnter
。beforeResolve
守卫(2.5+)。afterEach
钩子。beforeRouteEnter
守卫中传给 next
的回调函数,创建好的组件实例会作为回调函数的参数传入