antd menu组件
继续记录antd+react使用
场景
1.每次刷新浏览器后,menu应该继续选中当前url对应的menuitem 2.限制只能打开一个menugroup
代码&思路
每次刷新浏览器后,menu应该继续选中当前url对应的menuitem
- 场景1思路:利用react路由的withRouter包裹当前组件,然后组件内部通过props就可以得到当前路由对象location;location的pathname就是当前的url,然后将该值赋给defaultSelectedKeys即可
- 场景2思路:menu组件打开的menu是通过openKeys控制,每次点击要打开的menu的时候,去将openkeys绑定的数组重置为当前点击的菜单的key即可
// Nav组件
import { withRouter } from "react-router-dom";
const Nav = ({ location }) => {
const [keys, setKeys] = useState(["sub1"]);
const saveKeys = ({ key }) => {
setKeys(() => [key]);
};
return (
<Menu
onClick={handleClick}
defaultSelectedKeys={[location.pathname]}
openKeys={keys}
mode="inline"
style={{ width: "100 %", height: "100%" }}
>
<SubMenu
onTitleClick={saveKeys}
key="sub0"
title={
<span>
<CopyOutlined />
<span>概览</span>
</span>
}
>
<Menu.Item key="/">
<Link to="/">首页</Link>
</Menu.Item>
</SubMenu>
<SubMenu
onTitleClick={saveKeys}
key="sub0"
title={
<span>
<CopyOutlined />
<span>概览</span>
</span>
}
>
<Menu.Item key="/about">
<Link to="/about">关于</Link>
</Menu.Item>
</SubMenu>
</Menu>
);
};
export default withRouter(Nav);