// 运行时配置 import * as AntdIcons from '@ant-design/icons'; import React from 'react'; type MenuItem = { icon?: string | React.ReactNode; [key: string]: unknown; }; type AntdIconComponent = React.ComponentType; // 临时屏蔽 React findDOMNode 警告,通常来自第三方库 const originalWarn = console.error; console.error = (...args: Parameters) => { if ( typeof args[0] === 'string' && args[0].includes('findDOMNode is deprecated') ) { return; } originalWarn(...args); }; // 全局初始化数据配置,用于 Layout 用户信息和权限初始化 // 更多信息见文档:https://umijs.org/docs/api/runtime-config#getinitialstate export async function getInitialState(): Promise<{ name: string }> { return { name: '@umijs/max' }; } export const layout = () => { return { logo: 'https://img.alicdn.com/tfs/TB1YHEpwUT1gK0jSZFhXXaAtVXa-28-27.svg', menuDataRender: (menuData: MenuItem[]) => { return menuData.map((item) => { const iconName = typeof item.icon === 'string' ? item.icon : undefined; const isIconName = iconName ? /(Outlined|Filled|TwoTone)$/.test(iconName) : false; const IconComponent = isIconName ? (AntdIcons[iconName as keyof typeof AntdIcons] as AntdIconComponent) : undefined; return { ...item, icon: IconComponent ? React.createElement(IconComponent) : item.icon, }; }); }, token: { layout: { bgLayout: 'none', // Remove gradients and glows }, }, }; };