import React, { PropTypes } from 'react' import { Menu, Icon } from 'antd' import { Link } from 'dva/router' import { menu } from '../../utils' const topMenus = menu.map(item => item.key) const getMenus = function (menuArray, siderFold, parentPath = '/') { return menuArray.map(item => { const linkTo = parentPath + item.key if (item.child) { return ( {item.icon ? : ''}{siderFold && topMenus.indexOf(item.key) >= 0 ? '' : item.name}}> {getMenus(item.child, siderFold, `${linkTo}/`)} ) } return ( {item.icon ? : ''} {siderFold && topMenus.indexOf(item.key) >= 0 ? '' : item.name} ) }) } function Menus ({ siderFold, darkTheme, location, handleClickNavMenu, navOpenKeys, changeOpenKeys }) { const menuItems = getMenus(menu, siderFold) const getAncestorKeys = (key) => { const map = { '/navigation/navigation2': ['/navigation'], } return map[key] || [] } const onOpenChange = (openKeys) => { const latestOpenKey = openKeys.find(key => !(navOpenKeys.indexOf(key) > -1)) const latestCloseKey = navOpenKeys.find(key => !(openKeys.indexOf(key) > -1)) let nextOpenKeys = [] if (latestOpenKey) { nextOpenKeys = getAncestorKeys(latestOpenKey).concat(latestOpenKey) } if (latestCloseKey) { nextOpenKeys = getAncestorKeys(latestCloseKey) } changeOpenKeys(nextOpenKeys) } // 菜单栏收起时,不能操作openKeys let menuProps = !siderFold ? { onOpenChange, openKeys: navOpenKeys, } : {} return ( {menuItems} ) } Menus.propTypes = { siderFold: PropTypes.bool, darkTheme: PropTypes.bool, location: PropTypes.object, isNavbar: PropTypes.bool, handleClickNavMenu: PropTypes.func, navOpenKeys: PropTypes.array, changeOpenKeys: PropTypes.func, } export default Menus