Files
nestjs-admin/admin/src/routes.ts
2024-10-26 12:10:13 +08:00

44 lines
1.0 KiB
TypeScript

import { AuthParams } from '@/utils/authentication';
import { useMemo } from 'react';
export type IRoute = AuthParams & {
name: string;
key: string;
// 当前页是否展示面包屑
breadcrumb?: boolean;
children?: IRoute[];
// 当前路由是否渲染菜单项,为 true 的话不会在菜单中显示,但可通过路由地址访问。
ignore?: boolean;
icon?: string
};
const generatorMenu = (data, parentId = 0) => {
const menu = [];
for (const item of data) {
item.key = item.url;
if (item.parentId === parentId) {
const children = generatorMenu(data, item.id);
if (children.length) {
item.children = children;
}
menu.push(item);
}
}
return menu;
};
const useRoute = (menus): [IRoute[], string] => {
const routes = generatorMenu(menus);
const defaultRoute = useMemo(() => {
const first = routes[0];
if (first) {
return first?.children?.[0]?.key || first.key;
}
return '';
}, [routes]);
return [routes, defaultRoute];
};
export default useRoute;