vue-router4.0 关于后台管理系统权限动态添加路由解决方案

本文介绍了在Vue Router 4.0中,由于`addRoutes`被`addRoute`取代,导致动态添加路由时遇到的问题及解决方案。在路由守卫中,通过`hasRoute`和`generateRoute`方法判断并动态添加路由,解决了无限循环和路由无法匹配的问题。提供的方案适用于后台管理系统权限控制,并给出了参考项目地址。
摘要由CSDN通过智能技术生成

首先说明一下vue-router4.0删除了 addRoutes的方法, 而是用addRoute代替。那么意味着我们动态添加路由的时候需要一个一个的添加。看下官方文档解释,添加新路由同时需要触发新路由才能显示页面
在这里插入图片描述
先看下这种方式:在路由守卫中添加动态路由(router4.0中next为可选)

 	// 获取权限的路由数组
      const list = await store.dispatch("setUserInfo");
      list.forEach((item) => {
   
        router.addRoute(item);
      });
      return to.fullPath;
      // 或者return true

表面上跟以前的添加没有太大的问题,然而如果使用return to.fullpath跳转,页面会进行无限循环,而使用return true跳转则会显示无法匹配该路由。这虽然有很多疑惑,但我们还是重回到文档的解析,文档中给了一个路由守卫动态添加路由的解决方案。
在这里插入图片描述
从红色框中看出,我们进行路由跳转的时候需要判断是否已经添加过路由了,按照这样的方法,那我也来写两个方法进行判断,我们把代码改进一下

	// 获取权限的路由数组
      const list = await store.dispatch("setUserInfo");
      if (hasRoute(to)) {
   
         const result = generateRoute(to, serviceRouter);
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值