addRoute动态添加路由导致浏览器警告

 在动态添加路由的时候会在控制栏出现各种各样的路由警告,刚开始以为是路由name重名问题引起,后查询相关资料是动态路由添加引起的,在router/index.js文件下创建一个方法resetRouter()

 addRoutes 方法仅仅是帮你注入新的路由,并没有帮你剔除其它路由。

解决方法:

1、 在router中写一个重置路由的方法resetRouter()

import Vue from "vue";
import Router from "vue-router";

Vue.use(Router);

export let routes =  [
    {
      path: "/",
      name: "main",
      redirect: "/home",
      component: () => import("@/views/main"),
      children: []
    },
    {
      path: "/login",
      name: "login",
      component: () => import("@/views/login")
    }
]
  
const createRouter = () => new Router({
    routes: routes
})
const router = createRouter()
//写一个重置路由的方法,切换用户后,或者退出时清除动态加载的路由
export function resetRouter() {
    const newRouter = createRouter()
    router.matcher = newRouter.matcher // 新路由实例matcer,赋值给旧路由实例的matcher,(相当于replaceRouter)
}
export default router

 2、在addRoute添加动态路由之前,重置路由,即调用resetRouter()

addMenu (state, router) {
    resetRouter()
    // 路由的动态添加
    menuArray.forEach((item) => {
	    router.addRoute('main',item)
    })
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值