import React from 'react'; import TweenOne from 'rc-tween-one'; import { Menu } from 'antd'; import { getChildrenToRender } from './utils'; const { Item, SubMenu } = Menu; class Header extends React.Component { constructor(props) { super(props); this.state = { phoneOpen: undefined, }; } phoneClick = () => { const phoneOpen = !this.state.phoneOpen; this.setState({ phoneOpen, }); }; render() { const { dataSource, isMobile, ...props } = this.props; const { phoneOpen } = this.state; const navData = dataSource.Menu.children; const navChildren = navData.map((item) => { const { children: a, subItem, ...itemProps } = item; if (subItem) { return ( {a.children.map(getChildrenToRender)} } popupClassName="header0-item-child" > {subItem.map(($item, ii) => { const { children: childItem } = $item; const child = childItem.href ? ( {childItem.children.map(getChildrenToRender)} ) : ( {childItem.children.map(getChildrenToRender)} ); return ( {child} ); })} ); } return ( {a.children.map(getChildrenToRender)} ); }); const moment = phoneOpen === undefined ? 300 : null; return ( {isMobile && ( { this.phoneClick(); }} > )} { if (this.state.phoneOpen) { e.target.style.height = 'auto'; } }, ease: 'easeInOutQuad', } : null } moment={moment} reverse={!!phoneOpen} > {navChildren} ); } } export default Header;