improve define menu

main
FrozenArcher 2024-03-14 02:33:39 +08:00
parent ec711daa0c
commit c24a82d177
1 changed files with 12 additions and 15 deletions

View File

@ -22,13 +22,9 @@ const keyRouterMap: KeyRouterMap = new Map();
function getItem( function getItem(
label: React.ReactNode, label: React.ReactNode,
key: React.Key, key: React.Key,
route?: { path: string; map: KeyRouterMap },
icon?: React.ReactNode, icon?: React.ReactNode,
children?: MenuItem[], children?: MenuItem[],
): MenuItem { ): MenuItem {
if (route !== undefined) {
route.map.set(key, route.path);
}
return { return {
key, key,
icon, icon,
@ -42,9 +38,9 @@ function defMenu(
key: React.Key, key: React.Key,
icon: React.ReactNode, icon: React.ReactNode,
path: string, path: string,
map: KeyRouterMap,
): MenuItem { ): MenuItem {
return getItem(label, key, { path: path, map: map }, icon); keyRouterMap.set(key, path);
return getItem(label, key, icon);
} }
function defRootMenu( function defRootMenu(
@ -53,29 +49,30 @@ function defRootMenu(
icon: React.ReactNode, icon: React.ReactNode,
children: MenuItem[], children: MenuItem[],
): MenuItem { ): MenuItem {
return getItem(label, key, undefined, icon, children); return getItem(label, key, icon, children);
} }
function defSubMenu( function defSubMenu(
label: React.ReactNode, label: React.ReactNode,
key: React.Key, key: React.Key,
path: string, path: string,
map: KeyRouterMap,
): MenuItem { ): MenuItem {
return getItem(label, key, { path, map }); keyRouterMap.set(key, path);
return getItem(label, key);
} }
const items: MenuItem[] = [ const items: MenuItem[] = [
defMenu('主页', '0', <DesktopOutlined />, '/', keyRouterMap), defMenu('主页', 'mainpage', <DesktopOutlined />, '/'),
defRootMenu('展示信息管理', 'sub1', <UserOutlined />, [ defRootMenu('展示信息管理', 'sub1', <UserOutlined />, [
defSubMenu('选项1', '1', '/admin/hello1', keyRouterMap), defSubMenu('选项1', '1', '/admin/hello1'),
defSubMenu('选项2', '2', '/admin/hello2', keyRouterMap), defSubMenu('选项2', '2', '/admin/hello2'),
defSubMenu('选项3', '3', '/admin/hello3', keyRouterMap), defSubMenu('选项3', '3', '/admin/hello3'),
]), ]),
defRootMenu('值班组长', 'sub2', <TeamOutlined />, [ defRootMenu('值班组长', 'sub2', <TeamOutlined />, [
defSubMenu('选项1', '4', '/duty/hi1', keyRouterMap), defSubMenu('选项1', '4', '/duty/hi1'),
defSubMenu('选项2', '5', '/duty/hi2', keyRouterMap), defSubMenu('选项2', '5', '/duty/hi2'),
]), ]),
defMenu('关于我们', 'aboutpage', <UserOutlined />, '/about'),
]; ];
interface BreadcrumbItem { interface BreadcrumbItem {