react中使用antd的二级菜单点击一个其他关闭

直接上代码
以下是官网的例子

import { Menu, Icon } from 'antd';

const { SubMenu } = Menu;

class Sider extends React.Component {
  // submenu keys of first level
  //带下拉的submenu
  rootSubmenuKeys = ['sub1', 'sub2', 'sub4'];
//默认一个打开的keys
 this.state = {
      collapsed: false,
      openKeys: ['']
    };
//在触发改变二级菜单时打开当前openKeys,关闭其他,官网的写法
 // onOpenChange = openKeys => {
   // const latestOpenKey = openKeys.find(key => //this.state.openKeys.indexOf(key) === -1);
  //  if (this.rootSubmenuKeys.indexOf(latestOpenKey) === -1) {
    //  this.setState({ openKeys });
    //} else {
     // this.setState({
       // openKeys: latestOpenKey ? [latestOpenKey] : [],
      //});
    //}
  //};
//当点击二级菜单时,有一个没有下拉的,所以折叠二级菜单是这么写的,具体看需求
  onOpenChange = openKeys => {
    this.setState({
      openKeys
    })
  };
  render() {
    return (
      <Menu
        mode="inline"
        openKeys={this.state.openKeys}
        onOpenChange={this.onOpenChange}
        style={
  { width: 256 }}
      >
        <SubMenu
          key="sub1"
          title={
            <span>
              <Icon type="mail" />
              <span>Navigation One</span>
            </span>
          }
        >
          <Menu.Item key="1">Option 1</Menu.Item>
          <Menu.Item key="2">Option 2</Menu.Item>
          <Menu.Item key="3">Option 3</Menu.Item>
          <Menu.Item key="4">Option 4</Menu.Item>
        </SubMenu>
        <SubMenu
          key="sub2"
          title={
            <span>
              <Icon type="appstore" />
              <span>Navigation Two</span>
            </span>
          }
        >
          <Menu.Item key="5">Option 5</Menu.Item>
          <Menu.Item key="6">Option 6</Menu.Item>
          <SubMenu key="sub3" title="Submenu">
            <Menu.Item key="7">Option 7</Menu.Item>
            <Menu.Item key="8">Option 8</Menu.Item>
          </SubMenu>
        </SubMenu>
        <SubMenu
          key="sub4"
          title={
            <span>
              <Icon type="setting" />
              <span>Navigation Three</span>
            </span>
          }
        >
          <Menu.Item key="9">Option 9</Menu.Item>
          <Menu.Item key="10">Option 10</Menu.Item>
          <Menu.Item key="11">Option 11</Menu.Item>
          <Menu.Item key="12">Option 12</Menu.Item>
        </SubMenu>
      </Menu>
    );
  }
}

ReactDOM.render(<Sider />, mountNode);

若只需要实现打开当前,关闭其他的二级导航,则以上代码就可以
注意:
openKeys是数组,传值一定要传对
若想在刷新页面后依然保持在当前打开状态,需要使用导航配合使用,监听导航的变化,然后修改state中的值(指的是选中的二级菜单的值,我是配合面包屑导航做的),在修改的值完了以后,重新setState中 openKeys的值,变成当前选中的openKeys的值

贴个地址:
https://ant-design.gitee.io/components/menu-cn/

    原文作者:zoepriselife316
    原文地址: https://blog.csdn.net/zoepriselife316/article/details/100919290
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞