vue-router 4.0版本addRoutes方法不生效问题解决

问题描述

  • 不知道从 vue-router3.x 版本后就不再支持 addRoutes() 方法了,本来对 vue 用的就不是很6,这样一搞我更懵得不行了。
  • 简单来描述一下我所遇到的问题,在全局导航守卫里添加了动态路由后,使用 router.push() 方法跳转到新的位置(组件)没问题,但是直接在地址栏输入路径,甚至是在原路径上刷新,都无法完成跳转,浏览器这么说:
    [Vue Router warn]: No match found for location with path "/xxx"
    

上代码,router/index.ts

import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
import Home from "../views/Home.vue";
import axios from 'axios'

const routes: Array<RouteRecordRaw> = [];
const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes,
});

router.beforeEach(async (to, from, next) => {
  var requestUrl = "http://127.0.0.1:8000/api/system/menus/";
  await axios
    .get(requestUrl)
    .then(res => {
        for(var i =0; i<res.data.length; i++) {
        	var te = {
        		path: res.data[i].url,
				name: res.data[i].name,
              	component: () => import('@/views/Sys/Jingchuan.vue')
            }; 
        }
        
    .then(res => {
      
    })
    .catch((res) => {
      console.log("except");
    });


  if (to.path === '/login') {
    // 如果是访问登录界面,如果用户会话信息存在,代表已登录过,跳转到主页
    if(token) {
      next({ path: '/' })
    } else {
      next()
    }
  } else {
    if (!token) {
      // 如果访问非登录界面,且户会话信息不存在,代表未登录,则跳转到登录界面
      next({ path: '/login' })
    } else {
      // 加载动态菜单和路由
      for(var i=0; i<dd.length; i++) {
        router.addRoute('Home', dd[i]);
        router.options.routes.push(dd[i]);
        //router.push(dd[i].path)
        console.log(router);
      }
      console.log(router.getRoutes());
      store.commit('menuRouteLoaded', true)
  
    next()
    }
    
  }

})


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值