antd 二级菜单不跟随主菜单收起,文字还显示的问题

感谢,跟我一样遇到这个问题的 靠谱大哥
https://blog.csdn.net/weixin_44180427/article/details/103124890
奈斯啊

我把我全部代码贴上好了,问题解决在上面的链接,记录我的代码

  //递归 渲染子菜单
  renderChildMenu = (currMenu, urlList = '') => {
    return Object.keys(currMenu.children).map(childkey => {
      const key = `${currMenu.children[childkey].url}`;
      const currChildKey = currMenu.children[childkey].url.replace('/', '');
      const children = currMenu.children[childkey].children;
      const name = currMenu.children[childkey].name;
      return (
        children ?
          <SubMenu title={
            <span>
              <Icon type={currMenu.children[childkey].icon} />
              <span>{currMenu.children[childkey].name}</span>
            </span>
          }
            key={currMenu.children[childkey].key} id={key}>
            {this.renderChildMenu(currMenu.children[childkey])}
          </SubMenu>
          :
          <Menu.Item
            className={`${styles.menuChildLi} ${!urlList.includes(currChildKey) && styles.menuChildLiActive}`}
            key={key}
            id={childkey}
            onClick={() => {
              this.onMenuClick({
                route: key,
                title: name
              });
            }}
          >
            <Icon type={currMenu.children[childkey].icon} />
            <span>{currMenu.children[childkey].name}</span>
          </Menu.Item>
      );
    });
  }

  //没有子菜单时,直接渲染(特别注意是 span套span,不然icon会显示不出来 !!!!!!!!!!!)
  configMenu = (item) => {
    return (
      <Menu.Item key={item.key}
        onClick={() => this.onMenuClick(item.url)}>
        <Icon type={item.icon} />
        <span>{item.title}</span>
      </Menu.Item>);
  }

  //点击收起菜单,改变他的形式
  onCollapse = collapsed => {
    this.setState({ collapsed });
  };

  //点击展开
  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] : [],
      });
    }
  };

  render() {
    const { publicmenu :{collapsed,curactiveKey}} = this.props;
    const menu = Object.keys(menuConfig)
      .map(key => {
        // if (!menuConfig[key].authority) {权限?
        return (
          menuConfig[key].children ? (
            <SubMenu title={
              <span>
                <Icon type={menuConfig[key].icon} />
                <span>{menuConfig[key].name}</span>
              </span>
            }
              key={menuConfig[key].key} id={key}>
              {this.renderChildMenu(menuConfig[key])}
            </SubMenu>
          ) : (
              <Menu.Item
                style={{ display: `${menuConfig[key].hidden ? `none` : 'inline-block'}` }}
                key={menuConfig[key].url}
                onClick={() => this.onMenuClick({
                  route: menuConfig[key].url,
                  title: menuConfig[key].name
                })}
                id={key}
              >
                <Icon type={menuConfig[key].icon} />
                <span>{menuConfig[key].name}</span>
              </Menu.Item>
            )
        );
        // }
        // return null;
      });

    const defaultProps = collapsed ? {} : { openKeys: this.state.openKeys };

    let widthauto = '';
    collapsed ? widthauto = '78px' : widthauto = '200px';
    return (
      <Sider
        collapsible
        collapsed={collapsed}
        style={{ overflowY: "auto" }}
        breakpoint="lg"
      >
        <div className={styles.logo} id="logo">
          <Link to="/">
            <img src={logo} alt="logo" />
          </Link>
        </div>
        <div style={{ display: 'flex', flexDirection: 'column', height: 'calc(100% - 250px)', paddingRight: 1 }}>
          <div style={{ flex: 1, overflowY: 'auto', overflowX: 'hidden' }} className={styles.star}>
            <Menu theme="dark"
              defaultOpenKeys={this.state.openKeys}
              // defaultOpenKeys={['mock','portfolioMng',]}
              defaultSelectedKeys={[curactiveKey]}
              selectedKeys={[curactiveKey]}
              mode="inline"
              className={styles.sider_menu}
              // openKeys={this.state.openKeys}
              onOpenChange={this.onOpenChange}
              {...defaultProps}
            >
              {menu}
            </Menu>
            <PortSelect widthauto={widthauto} />
          </div>
        </div>
      </Sider>
    );
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值