局部路由守卫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