解决动态添加路由 出现重复路由问题


highlight: atom-one-dark
theme: simplicity-green

在做后台管理项目时,需要根据用户权限动态添加路由,但退出登录账号1,登录账号2时,出现了[vue-router] Duplicate named routes definition这样的警告,如图:
在这里插入图片描述

Duplicate named routes definition:重复定义路由

查阅资料,这一篇文章给出了两种解决方案:
解决$router.addRoutes()添加路由,出现的路由重复添加问题

方法1:location.reload(),vue上的所有实例在刷新的时候都会被重置
方法2:刷新时只重置路由

显然,方法1所有都被重置,比较耗时,对用户不太友好,只重置路由似乎是个更好的选择
文章里给出方法2的解决方案是定义一个重置路由的函数,再在退出登录时调用即可

于是,采取方法2开始解决问题
因为涉及路由的定义,重置函数应该写在router文件夹下的index.js里

//定义新建路由方法
const createRouter = () =>
  new Router({
    mode: "history",
    routes: routes //传入定义的路由参数
  });
//新建路由
const router = createRouter()
//重置路由函数 export
export function resetRouter() {
    const newRouter = createRouter(); 
    router.matcher = newRouter.matcher; //替换成新的空路由
  }

export default router

router.matcher是比较核心的一个属性,修改了matcher即新的routes生效
对外提供两个方法match(负责route匹配), addRoutes(动态添加路由)

具体过程:在做路径切换transitionTo方法中,首先就会使用const route = this.router.match(location, this.current)来匹配route, 其实内部会使用matcher来做匹配。修改了matcher即新的routes生效。

match (
    raw: RawLocation,
    current?: Route,
    redirectedFrom?: Location
  ): Route {
    // 这里使用matcher的match方法来做匹配
    return this.matcher.match(raw, current, redirectedFrom)
  }

对router.matcher属性做修改,即新的routes就会替换老的routes, 其实就是replaceRoutes()的含义(但是官方没有提供这个API)。

export type Matcher = {
  match: (raw: RawLocation, current?: Route, redirectedFrom?: Location) => Route;
  addRoutes: (routes: Array<RouteConfig>) => void;
};

接下来,就是在退出登录按键下调用这个resetRouter函数
退出登录在CommonHeader.vue的下拉菜单里
首先在CommonHeader.vue里引入resetRouter函数

import {resetRouter} from '../router/index'

然后在按键绑定的方法里调用即可

 handleCommand(command){
            if(command === 'logout'){
                Cookie.remove('token')
                Cookie.remove('menu')
                this.$router.push('/login')
                resetRouter()    //重置路由           
            }
        }

再次运行项目就没有警告了,问题解决!

参考资料(vue.js - vue-router工作原理概述和问题分析)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网络岗软路由5.0 第一步、更改路由器和猫的连接方式,把路由器当交换机来用,废弃wen口。 第二步、主机IP地址设置 安装网络岗5.0后,首先对主机网卡进行IP地址配置: 单网卡用户:网卡的IP地址设置为IP:192.168.1.1,掩码:255.255.255.0,网关、DNS无须设置,由该网卡进行ADSL拨号。 双网卡用户:连接分机的内网网卡设置IP:192.168.1.1,掩码:255.255.255.0,网关、DNS无须设置;连接MODEM的外网网卡无须设置IP地址,由该外网网卡进行ADSL拨号。 第三步、网络岗设置 登录网络岗5.0,点击“宽带拨号”(网络岗已经识别出了第一步已经建立好的ADSL拨号连接)----〉“设置”----〉入宽带用户名和密码----〉“自动拨号”----〉“提交”----〉“连接网络”,主机拨号成功,可以上网。 第四步、分机IP地址设置 分机IP设置 IP:192.168.1.X(X为2-254的任意数字,但网内不能有重复)掩码:255.255.255.0,网关192.168.1.1,DNS设置成本地电信运营商提供的DNS(参考DNS:202.96.209.5)。 二、固定IP接入用户设置向导 第一步、主机IP地址设置 单网卡用户:保持网卡的原IP地址设置,主机通过该网卡可以上网;再添加一个IP地址作为分机的网关--IP:192.168.1.1,掩码:255.255.255.0,网关、DNS无须设置。 双网卡用户:外网网卡的IP地址设置不变,主机通过该外网网卡可以上网;连接分机的内网网卡设置IP:192.168.1.1掩码:255.255.255.0,网关、DNS都无须设置。 第二步、网络岗设置 无须设置。 第三步、分机上网设置 分机的IP设置 IP:192.168.1.X(X为2-254的任意数字,但网内不能有重复)掩码:255.255.255.0,网关192.168.1.1,DNS设置成本地电信运营商提供的DNS(参考DNS:202.96.209.5)。
配置路由访问服务器 配置路由访问服务器全文共41页,当前为第1页。 学习目标 安装Windows 2000 Server路由访问服务器; 配置静态路由; 配置NAT功能; 配置RIP路由访问协议。 配置路由访问服务器全文共41页,当前为第2页。 13.1 选择路由访问方法(1) 网络规模 协议支持 配置路由访问服务器全文共41页,当前为第3页。 13.1 选择路由访问方法(2) 示例配置一台Windows 2000路由服务器连接两个子网(安装两个网络适配器) A:210.43.16.0/255.255.255.0 B:210.43.19.0/255.255.255.0 配置路由访问服务器全文共41页,当前为第4页。 13.2 配置路由服务器(1) 设置两块网卡属性 "开始"/"设置"/"控制面板"/"网络和拨号连接" IP地址、子网掩码等 配置路由访问服务器全文共41页,当前为第5页。 13.2 配置路由服务器(2) 安装Windows 2000路由服务器 步骤一,选择"开始"/"程序"/"管理工具"/"路由和远程访问",出现 "路由和远程访问"管理窗口,参见图13-4所示窗口; 步骤二,右键单击该窗口左边"树"中的"主机名(本地)",在弹出菜单中选择"配置并启用路由和远程访问"项,屏幕出现"路由和远程访问服务安装向导"欢迎窗口,单击"下一步"按钮; 步骤三,出现如图13-4所示对话框,选择"网络路由器",单击"下一步"按钮,在出现的对话框中选择现有的协议或者添加一个远程客户协议(如:TCP/IP),如果所需要的通讯协议已列在列表中,则单击"下一步"按纽; 步骤四,出现的对话框要求选择是否请求拨号连接,选择"否",单击"下一步",单击"完成",结束安装过程。 配置路由访问服务器全文共41页,当前为第6页。 13.2 配置路由服务器(3) 图 13-3 路由远程访问服务器安装向导 配置路由访问服务器全文共41页,当前为第7页。 13.2 配置路由服务器(4) 图13-4 路由与远程访问管理窗口 配置路由访问服务器全文共41页,当前为第8页。 13.2 配置路由服务器(5) 启用路由服务器 选择"开始"/"程序"/"管理工具"/"路由和远程访问服务",选中充当路由器的服务器,单击鼠标右键,单击"属性",选择"仅用于局域网路由选择",单击"确定"钮,如图13-5所示。 配置路由访问服务器全文共41页,当前为第9页。 13.2 配置路由服务器(6) 图13-5 启用路由器设置 配置路由访问服务器全文共41页,当前为第10页。 13.3 设置静态路由器(7) 静态路由是在路由器中设置的固定的路由表。除非网络管理员干预,否则静态路由不会发生变化。由于静态路由不能对网络的改变作出反映,静态路由最适合小型、单径、静态 IP网络。静态路由的优点是简单、高效、可靠。在所有的路由中,静态路由优先级最高。当动态路由与静态路由发生冲突时,以静态路由为准,静态路由器要求手工构造和更新路由表。 配置路由访问服务器全文共41页,当前为第11页。 13.3 设置静态路由器(8) 图13-6 规划静态路由 配置路由访问服务器全文共41页,当前为第12页。 13.3 设置静态路由器(9) 步骤一,选择"开始"/"程序"/"管理工具"/"路由和远程访问服务",启动管理窗口,展开"IP路由选择",鼠标右键单击"静态路由",选择"静态路由"菜单添加静态路由表。 步骤二,弹出的如图13-7所示对话框,在目标地址和网络掩码输入"0.0.0.0",在网关处输入IP地址如210.43.16.2(如图13-6所示,路由器连接16网段端口的IP地址),单击"确定"钮。这一设置表示,到达本路由器的数据包,非子网A、子网B的地址,均路由到210.43.16.2路由器上。 配置路由访问服务器全文共41页,当前为第13页。 13.3 设置静态路由器(10) 图13-7 设置静态路由 配置路由访问服务器全文共41页,当前为第14页。 13.3 设置静态路由器(11) 步骤三,同样在连接Internet的路由器上也需加入到路由访问服务器的路由记录,设定对目标地址段为210.43.19.0的数据包转发的210.43.16.16路由器(路由访问服务器)上,跃点为1。这样子网B中的计算机与Internet可以实现互访。 配置好静态路由表后,在"静态路由"中多了一个静态路由记录,如图13-8所示,若在网络中存在多条径,可重复上述操作,添加多条静态路由记录。 配置路由访问服务器全文共41页,当前为第15页。 13.3 设置静态路由器(12) 图13-8 静态路由表 配置路由访问服务器全文共41页,当前为第16页。 13.3 设置静态路由器(13) 鼠标右键点击"静态路由",选择"显示IP路由选择表"

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值