import React, { useState } from 'react'; import { Layout, Menu } from 'antd'; import { hasPermission, history } from 'libs'; import styles from './layout.module.less'; import menus from '../routes'; import logo from './logo-spug.png'; import logoText from './logo-text.png'; let selectedKey = window.location.pathname; const OpenKeysMap = {}; for (let item of menus) { if (item.child) { for (let sub of item.child) { if (sub.title) OpenKeysMap[sub.path] = item.title } } else if (item.title) { OpenKeysMap[item.path] = 1 } } export default function Sider(props) { const [openKeys, setOpenKeys] = useState([]); function makeMenu(menu) { if (menu.auth && !hasPermission(menu.auth)) return null; if (!menu.title) return null; return menu.child ? _makeSubMenu(menu) : _makeItem(menu) } function _makeSubMenu(menu) { return ( {menu.icon}{menu.title}}> {menu.child.map(menu => makeMenu(menu))} ) } function _makeItem(menu) { return ( {menu.icon} {menu.title} ) } const tmp = window.location.pathname; const openKey = OpenKeysMap[tmp]; if (openKey) { selectedKey = tmp; if (openKey !== 1 && !props.collapsed && !openKeys.includes(openKey)) { setOpenKeys([...openKeys, openKey]) } } return (
Logo logo-text
history.push(menu.key)}> {menus.map(menu => makeMenu(menu))}
) }