import React, { Component, useEffect, useState } from 'react'; import { Menu } from 'antd'; const JumpUrls = [ { url: '/risk/hiddenrectification_approval', keys: 'riskHiddenrectification_approval' }, { url: '/safetymanage/hiddenrectification_approval', keys: 'hiddenrectification_approval' }, { url: '/metadataManagement/latestMetadata', keys: 'latestMetadata' }, ] const Sider = (props) => { const [items, setItems] = useState([]) const [selectedKeys, setSelectedKeys] = useState([]) const [openKeys, setOpenKeys] = useState([]) const { pathname } = props; useEffect(() => { let jumpurlObj = JumpUrls.find(s => s.url == pathname && selectedKeys != s.keys) if (jumpurlObj) { localStorage.setItem('governmentDataResourceCenter_selected_sider', JSON.stringify([jumpurlObj.keys])) setSelectedKeys(jumpurlObj.keys) } if (pathname.indexOf('metadataManagement/latestMetadata') < 0) sessionStorage.removeItem('jumpSelectedKey'); if (pathname.indexOf('metadataManagement/businessMetadata') < 0) sessionStorage.removeItem('jumpBusinessSelectedKey'); }, [pathname]) useEffect(() => { const { sections, dispatch, user } = props; let items = sections.reduce((p, c) => { if (typeof c.getNavItem == 'function') { let item = c.getNavItem(user, dispatch); if (item != null) { if (Array.isArray(item)) { p = p.concat(item); } else { p.push(item); } } } return p; }, []); setItems(items) let selectedKeys = [] let openKeys = [] const lastSelectedKeys = localStorage.getItem('governmentDataResourceCenter_selected_sider') if (lastSelectedKeys) { selectedKeys = JSON.parse(lastSelectedKeys) } const lastOpenKeys = localStorage.getItem('governmentDataResourceCenter_open_sider') if (lastOpenKeys) { openKeys = JSON.parse(lastOpenKeys) } if (!selectedKeys.length && !openKeys.length) { let firstItem = items[0] || null if (firstItem) { let children = firstItem.props.children if (Array.isArray(children)) { selectedKeys = [children[0].key] openKeys = [firstItem.key] } else if (children.key) { selectedKeys = [children.key] openKeys = [firstItem.key] } else { selectedKeys = [firstItem.key] } } } localStorage.setItem('governmentDataResourceCenter_selected_sider', JSON.stringify(selectedKeys)) setSelectedKeys(selectedKeys) localStorage.setItem('governmentDataResourceCenter_open_sider', JSON.stringify(openKeys)) setOpenKeys(openKeys) }, []) return ( { const { selectedKeys } = e; setSelectedKeys(selectedKeys) localStorage.setItem('governmentDataResourceCenter_selected_sider', JSON.stringify(selectedKeys)) }} onOpenChange={(openKeys) => { setOpenKeys(openKeys) localStorage.setItem('governmentDataResourceCenter_open_sider', JSON.stringify(openKeys)) }} > {items} ) } export default Sider;