Vue3-35-路由-路由守卫的简单认识

什么是路由守卫

路由守卫,就是在 路由跳转 的过程中,
可以进行一些拦截,做一些逻辑判断,
控制该路由是否可以正常跳转的函数。

常用的路由守卫有三个 :
beforeEach() : 前置守卫,在路由 跳转前 就会被拦截;
beforeResolve() : 解析守卫,对路由的中的做元数据解析判断等逻辑处理;【常用】
afterEach() : 后置守卫,路由跳转之后的操作,这个用的较少。

本文对上述三个路由守卫进行一下简单的使用,供大家参考。
重点是看 路由的配置 和 效果截图。

路由守卫的基本信息

路由守卫 就是一个函数,
这个函数有固定的两个参数 :第一个是 目标路由对象,第二个是 来源路由对象;
返回值 : 当返回为 undefine 或这 true 时,会继续正常跳转;
         当返回值为 false 时,路由会被停止;
         也可以返回一个对象,重定向到某个路由对象。

下面是路由守卫的简单使用案例

// 导入 定义路由的两个方法
import {createRouter,createWebHistory}  from 'vue-router'

// 引入两个组件
import componentA from "./componentA.vue";
import componentB from "./componentB.vue";

// 声明路由跳转的路径与组件的对应关系
const routsList = [
    {path:'/a',name:'aroute',component:componentA},
    {path:'/b',name:'broute',component:componentB},
    {path:'/b2',name:'b2route',redirect:{name:'aroute'}},

]

// 创建路由的实例对象
const routerConfigObj = createRouter({
    history:createWebHistory('abc'), // 带一个参数,表示是路由的一个前缀
    routes:routsList // 指定路由的配置列表
})


// 前置守卫
routerConfigObj.beforeEach((to,from)=>{
    console.log('前置守卫 : to  : ',to)
    console.log('前置守卫 :from : ',from)
    console.log('------')
    // if(to.fullPath != '/b'){
    //     //return '/b'
    //     //return {path:'/b'}
    //     //return {name:'broute'}
    // }

    return true;
})

// 全局解析守卫
routerConfigObj.beforeResolve((to,from)=>{
    console.log('解析守卫 : to  : ',to)
    console.log('解析守卫 :from : ',from)
    console.log('------')
    if(to.fullPath != '/b'){
        return '/b'
        //return {path:'/b'}
        //return {name:'broute'}
    }

    // return true
})

// 后置守卫
routerConfigObj.afterEach((to,from)=>{
    console.log('后置守卫 : to  : ',to)
    console.log('后置守卫 :from : ',from)
    console.log('------')
})

// 导出路由的对象
export default routerConfigObj;

》 运行效果

在每个路由守卫中,
都可以获取到 源路由对象 和 目标路由对象,
从而进行逻辑处理。

在这里插入图片描述
Vue3-35-路由-路由守卫的简单认识_第1张图片

你可能感兴趣的:(Vue3,vue3,路由,路由守卫)