umi 动态路由配置


import { getUserPerm } from '@/services/menu';
import router from 'umi/router';
let authRoutes = [];
export const dva = {
  config: {
    onError(err) {
      err.preventDefault();
      console.error(err.message);
    },
  },
};

function filterRoute(routes,authRoute) {
  const arr = [];
  authRoute.forEach(item => {
    routes.forEach(route => {
      if (route.path === item.path) {
        let obj = {};
        if (route.routes && item.routes) {
          obj = route;
          obj.routes = (filterRoute(route.routes,item.routes));
          arr.push(obj);
        } else {
          obj = route;
          arr.push(obj);
        }
      }
    })
  })
  return arr;
}
export function patchRoutes(routes) {
 routes[1].routes = filterRoute(routes[1].routes,authRoutes)
  window.g_routes = routes;
}
export async function  render(oldRender) {
  const authRoutesResult = await getUserPerm();
  window.oldRender = () => {
    if (authRoutesResult && authRoutesResult.code === 0) {
      authRoutes = authRoutesResult.data;
    } else {
      oldRender();
    }
    oldRender();
  }
  if (window.oldRender) {
    window.oldRender();
  }
}

在model里登陆和登出需要window.location.reload 刷新页面。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM