You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

47 lines
1.5 KiB

var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import { createContext } from 'react';
import { isEmpty, head, map } from 'lodash';
import LRU from 'lru-cache';
export const urlCacheData = new LRU({});
export const UserMenuContext = createContext(null);
//获取首个路由path
export function getPath(menu) {
let path;
(function getRoute(menu = []) {
if (isEmpty(menu.routes)) {
path = menu.path;
}
else {
getRoute(head(menu.routes));
}
})(head(menu));
return path;
}
//展开菜单
export function analysisTree(menus, key) {
if (isEmpty(menus)) {
return [];
}
const menu = new Map();
const convertMenu = (list) => {
list.forEach((item) => {
const { routes = [] } = item, other = __rest(item, ["routes"]);
menu.set(item[key], other);
if (!isEmpty(routes)) {
convertMenu(routes);
}
});
};
convertMenu(menus);
return map(Array.from(menu.values()), key);
}