局部路由守卫component守卫
component守卫(beforeRouteEnter、beforeRouteLeave)
- 代码位置:在路由组件中,代码是写在component当中的(XXX.vue)
- beforeRouteEnter、beforeRouteLeave都有三个参数:
- to参数:to是一个路由对象,表示到哪儿去(跳转的下一个路由组件)。
- from参数:form是一个路由对象,表示从哪来(从哪个路由切换过来的)。
- next参数:next是一个函数,表示允许通过,可以继续向下走。
- beforeRouteEnter格式:
beforeRouteEnter(to, from, next){}
- beforeRouteLeave格式:
beforeRouteLeave(to, from, next){}
- 执行时机:
- beforeRouteEnter的执行时机:进入路由组件之前执行
- beforeRouteLeave的执行时机:离开路由组件之前执行
- 两个函数都是执行一个对象
- 全局前置、后置路由守卫 和 component守卫的区别
- 全局前置、后置路由守卫在调用时两个都会启动
- beforeRouteEnter、beforeRouteLeave在调用时只能有一个能用,另一个就不能用
<template>
<div>
<h2>区</h2>
<ul>
<li>{{a1}}</li>
<li>{{a2}}</li>
<li>{{a3}}</li>
</ul>
</div>
</template>
<script>
export default {
name : 'City',
props : ['a1', 'a2', 'a3'],
beforeRouteEnter(to, from, next){
console.log(`进入到路由组件之前:${to.meta.title}`);
next()
},
beforeRouteLeave(to, from, next){
console.log(`离开路由组件之前:${from.meta.title}`);
next()
}
}
</script>
<template>
<div>
<h2>市</h2>
<div>
<ul>
<li>
<router-link :to="{
name : 'wh',
params : {
a1 : wh[0],
a2 : wh[1],
a3 : wh[2],
}
}">
武汉市
</router-link>
</li>
<li>
<router-link :to="{
name : 'hs',
params : {
a1 : hs[0],
a2 : hs[1],
a3 : hs[2],
}
}">
黄石市
</router-link>
</li>
</ul>
<router-view></router-view>
</div>
</div>
</template>
<script>
export default {
name : 'HuBei',
data(){
return{
wh : ['江岸区', '江汉区', '桥口区'],
hs : ['下陆区', '铁山区', '西塞山区']
}
}
}
</script>
<template>
<div>
<h2>省</h2>
<div>
<ul>
<li><router-link to="/hubei">湖北省</router-link></li>
</ul>
<router-view></router-view>
</div>
</div>
</template>
<script>
export default {
name : 'App'
}
</script>
import VueRouter from 'vue-router'
import HuBei from '../pages/HuBei'
import City from '../pages/City'
const router = new VueRouter({
routes : [
{
name : 'bei',
path : '/hubei',
component : HuBei,
meta : {title : '湖北省'},
children : [
{
name : 'wh',
path : 'wuhan',
component : City,
props : true,
meta : {
isAuth : true,
title : '武汉市'
},
},
{
name : 'hs',
path : 'huangshi',
component : City,
props : true,
meta : {
isAuth : true,
title : '黄石市'
}
}
]
}
]
})
export default router