Vue3-40-路由- 动态路由

说明

复制代码
本文主要介绍了 对路由的动态配置,主要包括以下几个部分:
	1、判断某个路由是否存在;
	2、查看路由对象中的所有路由配置;
	3、添加一个路由;
	4、删除一个路由。

针对上述四个方面,vue-router 中提供了对应的 API ,
因此,本文将主要介绍对应的API及其使用方法。

API 说明

注意 : 以下API 都是 全局路由配置对象的方法!
hasRoute(路由名称) : 判断某个路由是否存在,参数为 目标路由的名称,即 name 属性;
getRoutes(): 无参数,返回路由列表;
addRoute(): 添加路由
removeRoute(路由名称): 移除路由,参数为 目标路由的名称,即 name属性

下面介绍一下具体的使用

判断路由是否存在 hasRoute

ts 复制代码
  // 引入路由相关的方法
  import { useRouter} from 'vue-router';

  // 声明 路由实例对象 
  const routerObj = useRouter()

  // 判断是否存在某个路由 : 参数是路由的 name 
  console.log('判断是否包含 /a 路由 :',routerObj.hasRoute('aroute'))

获取路由的配置列表 getRoutes

ts 复制代码
 // 引入路由相关的方法
  import { useRouter} from 'vue-router';

  // 声明 路由实例对象 
  const routerObj = useRouter()

  // 查看所有的路由对象
  console.log('所有的路由配置列表 :',routerObj.getRoutes())

添加路由

常规添加

参数只有一个,就是目标路由配置对象

ts 复制代码
  // 引入路由相关的方法
  import { useRouter} from 'vue-router';

  // 声明 路由实例对象 
  const routerObj = useRouter()

  // 执行路由对象的添加
  routerObj.addRoute({
            path:'/c',
            name:'croute',
            component: () => import('./componentC.vue')
        })

添加路由到某个路由下成为子路由

参数有两个:
参数1 : 父级路由的 name
参数2 :目标路由的配置对象

ts 复制代码
  // 引入路由相关的方法
  import { useRouter} from 'vue-router';

  // 声明 路由实例对象 
  const routerObj = useRouter()

  // 添加嵌套路由
  routerObj.addRoute('aroute',{
            path:'c',
            name:'crouteChild',
            component: () => import('./componentC.vue')
        })

移除路由

根据路由名称执行移除

ts 复制代码
  // 引入路由相关的方法
  import { useRouter} from 'vue-router';

  // 声明 路由实例对象 
  const routerObj = useRouter()

  // 根据名称移除路由
  routerObj.removeRoute('aroute')

当路由没有name的时候该怎么办

复制代码
通常情况下,我们在路由配置的时候都会指定 【name】属性,
但是,在动态路由添加的时候,可能不会指定 【name】属性,
此时,就有了第二种的移除路由的方式,
那就是,在动态添加路由 addRoute() 的时候,会有一个返回值对象,
我们可以把这个返回值对象作为一个参数,调用一下,就会完成路由的移除动作。

代码如下:
ts 复制代码
  // 引入路由相关的方法
  import { useRouter} from 'vue-router';

  // 声明 路由实例对象 
  const routerObj = useRouter()

  // 接收一下 addRoute() 的回掉函数
  let routeCObj = routerObj.addRoute({
            path:'/c',
            name:'croute',
            component: () => import('./componentC.vue')
        })

  // 调用一下上面的回掉函数,对应的路由对象就被移除了
  routeCObj();
  // ok,完成移除操作
相关推荐
运维蒙工1 天前
eNSP实战 |OSPF多区域拓(Area 0骨干+Area 1非骨干)
ensp·ospf·多区域·动态路由·华为数通·abr
XLYcmy1 天前
HTML/CSS/JS 基础与 Vue 技术栈深度解析
java·前端·css·html·vue3·vue2·api
码视野4 天前
基于 Spring Boot + Vue3 的【大学英语四六级 (CET-4/6) 作文智能评分与句式润色系统】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端·vue3
码视野4 天前
基于 Spring Boot + Vue3 的【高校化学实验室安全准入考试与危化品配伍排查系统】设计与实现(含PRD/三端高保真源码/大屏)
前端·人工智能·spring boot·后端·安全·vue3
fxshy4 天前
WebGIS 游戏化实践:基于 Cesium + Vue3 实现全球飞行模拟系统:从球体坐标、飞行动力学到地形碰撞实战
游戏·vue3·cesium·webgis·飞行模拟
jonyleek5 天前
技术实践:基于 Vue3 + Spring Cloud 微服务实现私有化文档系统的类 SaaS 协同体验
微服务·私有化部署·vue3·springcloud·协同编辑·jvs企业文档·无忧企业文档
码视野5 天前
基于 Vue3 + Element Plus 的【智慧社区洗车养车与上门流动洗车预约调度系统】设计与实现(含PRD/三端源码/大屏)
前端·javascript·vue.js·人工智能·vue3
码视野5 天前
基于 Vue3 + Element Plus 的【无人值守共享自习室与空间智能预约系统】设计与实现(含PRD/三端源码/大屏)
前端·javascript·vue.js·人工智能·vue3
码视野5 天前
基于 Vue3 + Element Plus 的【基于 Vue3 的智慧健身房会员管理与私教团课预约核销系统】设计与实现(附完整源码与PRD)
前端·vue3
码视野5 天前
基于 Vue3 + Element Plus 的【青少年心理健康智能测评与 AI 情绪树洞陪护干预系统】设计与实现(含PRD/三端源码/大屏)
前端·vue.js·人工智能·vue3