import React, { useEffect, useState } from 'react' import { Layout, Menu, Breadcrumb, Image } from 'antd' import { Container } from '../styled/layout' import { useRouter } from 'next/router' import _ from 'lodash' import menuConfig from '../utils/menu' const { SubMenu } = Menu const { Header, Content, Sider } = Layout const getLocationKey = () => { const result = { topMenu: '1', slideMenu: '0' } if (typeof window !== 'undefined') { const locationHref = window.location.href let locationHrefArr = locationHref.split('?') if (locationHrefArr.length > 0) { locationHrefArr = locationHrefArr[0].split('//') if (locationHrefArr.length > 1) { let locationStr = locationHrefArr[1] const locationIndex = locationStr.indexOf('/') locationStr = locationStr.substring(locationIndex) console.log('locationStr', locationStr) _.each(menuConfig, (item:any, index:any) => { const { key, url, subMenus } = item if (subMenus) { _.each(subMenus, (subItem:any, subIndex:any) => { const { key: subKey, url: subUrl } = subItem if (locationStr === subUrl.split('?')[0]) { const subKeyArr = subKey.split('_') const subKeyArrLen = subKeyArr.length if (subKeyArrLen > 0) result.topMenu = subKeyArr[0] if (subKeyArrLen > 1) result.slideMenu = subKeyArr[1] return false } }) } else if(url){ if (locationStr === url.split('?')[0]) { result.topMenu = key return false } } }) } } } console.log('result', result) return result } const routerPush = (router: any, url: string) => { console.log('routerPush', url) if (router && url) { router.push(url) } } const LayoutComponent = ({ children }) => { const router = useRouter() const [topMenuKey, setTopMenuKey] = useState('1') const [sliderMenuKey, setSliderMenuKey] = useState('1') console.log('topMenuKey: ' + topMenuKey, ', sliderMenuKey: ' + sliderMenuKey) useEffect(() => { const { topMenu, slideMenu } = getLocationKey() setTopMenuKey(topMenu) setSliderMenuKey(slideMenu) }, []) return (
{_.map(menuConfig, (item:any, index:any) => { const { key, text, url, subMenus } = item if (key) { return ( { routerPush(router, url) setTopMenuKey(key) if (subMenus) { setSliderMenuKey('1') } else { setSliderMenuKey('0') } }} > {text} ) } })}
{_.map(menuConfig, (item:any, index:any) => { const { key, text, url, icon, subMenus } = item if (subMenus) { return ( { setTopMenuKey(key) setSliderMenuKey('1') }} > {_.map(subMenus, (subItem:any, subIndex:any) => { const { key: subKey, text: subText, url: subUrl } = subItem return ( { routerPush(router, subUrl) const subKeyArr = subKey.split('_') const subKeyArrLen = subKeyArr.length console.log(subKeyArr, subKeyArrLen) if (subKeyArrLen >= 1) setTopMenuKey(subKeyArr[0]) if (subKeyArrLen >= 2) setSliderMenuKey(subKeyArr[1]) }} > {subText} ) })} ) } else { if (key) { return ( { routerPush(router, url) setTopMenuKey(key) setSliderMenuKey('0') }} > {text} ) } } })} {_.map(menuConfig, (item:any, index:any) => { const { key, text, subMenus } = item if (key && key === topMenuKey) { if (subMenus) { const subContent = [] _.each(subMenus, (subItem:any, subIndex:any) => { const { key: subKey, text: subText } = subItem if (subKey === key + '_' + sliderMenuKey) { subContent.push({text}) subContent.push({subText}) return false } }) return subContent } else { return {text} } } })} {children}
) } export default LayoutComponent