/** * @FixMenuItemIcon 菜单图标手动导入 * * */ import React from 'react'; import { MenuDataItem } from '@ant-design/pro-layout'; import {CarOutlined, UserOutlined, TableOutlined, DollarCircleOutlined, ShopOutlined, UserSwitchOutlined, HomeOutlined, SettingOutlined, TeamOutlined, DotChartOutlined, BlockOutlined, DesktopOutlined, DatabaseOutlined, WarningOutlined, CalendarOutlined, ExperimentOutlined, ThunderboltOutlined, BugOutlined, AreaChartOutlined,ContactsOutlined, GatewayOutlined, BellOutlined, PictureOutlined, OrderedListOutlined, BranchesOutlined } from '@ant-design/icons'; const iconMap:any = { 'CarOutlined': , 'UserOutlined': , 'TableOutlined': , 'DollarCircleOutlined': , 'ShopOutlined': , 'UserSwitchOutlined': , 'HomeOutlined': , 'SettingOutlined': , 'TeamOutlined': , 'DotChartOutlined': , 'BlockOutlined': , 'DesktopOutlined': , 'DatabaseOutlined': , 'WarningOutlined': , 'CalendarOutlined': , 'ExperimentOutlined': , 'ThunderboltOutlined': , 'BugOutlined': , 'AreaChartOutlined': , 'ContactsOutlined': , 'GatewayOutlined': , 'BellOutlined': , 'PictureOutlined': , 'OrderedListOutlined':, 'BranchesOutlined': } // FIX从接口获取菜单时icon为string类型 const fixMenuItemIcon = (menus: MenuDataItem[], iconType = 'Outlined'): MenuDataItem[] => { menus.forEach((item) => { const { icon, children } = item; if (typeof icon === 'string') { console.log(22, icon) if (icon in iconMap) { item.icon = iconMap[icon]; } else { item.icon = iconMap['TableOutlined']; } // let fixIconName = icon.slice(0, 1).toLocaleUpperCase() + icon.slice(1) + iconType; // // @ts-ignore // item.icon = React.createElement(allIcons[fixIconName] || allIcons[icon]); } // eslint-disable-next-line @typescript-eslint/no-unused-expressions children && children.length > 0 ? (item.children = fixMenuItemIcon(children)) : null; }); return menus; }; export default fixMenuItemIcon;