Vue-router路由(下)
Vue生态中的一员大将Vue-router,负责管理页面路由,书接上回,本节介绍路由重定向、别名及导航守卫。
重定向
重定向在routes配置中完成,要从/a重定向到/b
1 |
|
也可以使用对象的形式
1 |
|
还支持将params类型的参数传递转换为query类型的,但一般不这样做
1 |
|
别名
1 |
|
可以起多个别名,以数组的形式
1 |
|
若路由中有params类型的参数传递,起别名时也要带上参数
1 |
|
导航守卫
导航守卫主要用来通过跳转或取消的方式守卫导航
有多种机会植入路由导航过程中:
全局导航守卫:在index.js中添加
前置守卫
1
2
3
4router.beforeEach((to, from) => {
// 处理
return true;
})后置钩子
1
2
3router.afterEach((to, from) => {
// 处理
})路由独享守卫:在单个路由下添加
1
2
3
4
5
6
7
8
9
10const routes = [
{
path: '/users/:id',
component: UserDetails,
beforeEnter: (to, from) => {
// reject the navigation
return false
},
},
]组件内的守卫
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18const UserDetails = {
template: `...`,
beforeRouteEnter(to, from) {
// 在渲染该组件的对应路由被验证前调用
// 不能获取组件实例 `this` !
// 因为当守卫执行时,组件实例还没被创建!
},
beforeRouteUpdate(to, from) {
// 在当前路由改变,但是该组件被复用时调用
// 举例来说,对于一个带有动态参数的路径 `/users/:id`,在 `/users/1` 和 `/users/2` 之间跳转的时候,
// 由于会渲染同样的 `UserDetails` 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
// 因为在这种情况发生的时候,组件已经挂载好了,导航守卫可以访问组件实例 `this`
},
beforeRouteLeave(to, from) {
// 在导航离开渲染该组件的对应路由时调用
// 与 `beforeRouteUpdate` 一样,它可以访问组件实例 `this`
},
}
<keep-alive>
与路由组合
在Vue3.x中不再支持如下形式
1 |
|
而应该采用如下方式
1 |
|
<keep-alive>
有两个可选属性
include
选择缓存的页面,可填字符串或正则表达式
exclude
选择不缓存的页面,可填字符串或正则表达式
Vue-router路由(下)
# 相关文章
1.Vue组合式API——CompositionAPI
2.Vuex入门
3.Vue-router路由(上)
4.Vue生命周期钩子详解
5.Vue组件化开发
6.Vue模板语法
7.Vue_CLI安装及项目搭建
1.Vue组合式API——CompositionAPI
2.Vuex入门
3.Vue-router路由(上)
4.Vue生命周期钩子详解
5.Vue组件化开发
6.Vue模板语法
7.Vue_CLI安装及项目搭建