import { useSecondPathName } from '@/hooks/routeHook'; import type { MenuProps } from 'antd'; import { Menu } from 'antd'; import React, { useMemo } from 'react'; import { useNavigate } from 'umi'; import { UserSettingBaseKey, UserSettingIconMap, UserSettingRouteKey, } from '../constants'; import { useTranslate } from '@/hooks/commonHooks'; import { useLogout } from '@/hooks/userSettingHook'; import styles from './index.less'; type MenuItem = Required['items'][number]; const SideBar = () => { const navigate = useNavigate(); const pathName = useSecondPathName(); const logout = useLogout(); const { t } = useTranslate('setting'); function getItem( label: string, key: React.Key, icon?: React.ReactNode, children?: MenuItem[], type?: 'group', ): MenuItem { return { key, icon, children, label: t(label), type, } as MenuItem; } const items: MenuItem[] = Object.values(UserSettingRouteKey).map((value) => getItem(value, value, UserSettingIconMap[value]), ); const handleMenuClick: MenuProps['onClick'] = ({ key }) => { if (key === UserSettingRouteKey.Logout) { logout(); } else { navigate(`/${UserSettingBaseKey}/${key}`); } }; const selectedKeys = useMemo(() => { return [pathName]; }, [pathName]); return (
); }; export default SideBar;