vue3-admin-element框架实现动态路由(根据接口返回)

第一步:在src-utils-handleRoutes,修改代码:

复制代码
export function convertRouter(routers) {
  let array = [];
  for (let i in routers) {
    for (let s in asyncRoutes) {
      if (routers[i].path == asyncRoutes[s].path) {
        array.push({ ...asyncRoutes[s] });
        if (s != 0) array[s].children = [];
        for (let o in routers[i].children) {
          for (let p in asyncRoutes[s].children) {
            if (
              routers[i].children[o].path == asyncRoutes[s].children[p].path &&
              routers[i].children[o].path != '/index'
            ) {
              array[s].children.push(asyncRoutes[s].children[p]);
            }
          }
        }
      }
    }
  }
  return array;
}

第二步登录后存储菜单数据:

第三部:因为框架默认为前端控制路由所以需要在src-config-setting文件将authentication改为all

第四步:找到src-config-permission ,获取登录成功后存储的菜单列表

第五步:找到src--store-modules-routes.js

async setAllRoutes({ commit }) {

let data = JSON.parse(localStorage.getItem('data'));

let menu = data.data.menu;

let accessRoutes = convertRouter(menu);

commit('setAllRoutes', accessRoutes);

return accessRoutes;

},

总结:此方法需要先在router index.js中制作假数据然后通过后端接口返回的数据进行对比,相等的显示

相关推荐
3秒一个大几秒前
Vue 任务清单开发:数据驱动 vs 传统 DOM 操作
前端·javascript·vue.js
阿蒙Amon几秒前
JavaScript学习笔记:2.基础语法与数据类型
javascript·笔记·学习
an8695001几秒前
vue自定义组件this.$emit(“refresh“);
前端·javascript·vue.js
Avicli1 分钟前
Gemini3 生成的基于手势控制3D粒子圣诞树
前端·javascript·3d
GinoWi1 分钟前
HTML标签 - 列表标签
前端
o__A_A2 分钟前
渲染可配置报告模板+自适应宽度(vue3)
前端·vue.js
鹏北海2 分钟前
Vue 组件解耦实践:用回调函数模式替代枚举类型传递
前端·vue.js
San304 分钟前
拒绝做 DOM 的“搬运工”:从 Vanilla JS 到 Vue 3 响应式思维的进化
javascript·vue.js·响应式编程
JienDa4 分钟前
JienDa聊PHP:从Laravel到ThinkPHP的现代Web开发实践
前端·php·laravel
软件技术NINI7 分钟前
盒模型在实际项目中有哪些应用场景?
前端·css·html