React-antd组件库-让Menu子菜单项水平排列

前言

antd导航菜单

在官网案例中,SubMenu默认是下拉框,并且官网没有给出其他显示形式的方法。
在这里插入图片描述
但是如果我们想做出下面这种水平排列效果该怎么做呢?这种显示需求应该是挺常见的。
在这里插入图片描述

解决方案

menu结构

const items = [
  { label: '菜单项一', key: 'item-1' }, // 菜单项务必填写 key
  {
    label: '子菜单',
    key: 'submenu',
    children: [
    { label: '子菜单项1', key: 'submenu-item-1' },
    { label: '子菜单项2', key: 'submenu-item-2' },
    { label: '子菜单项3', key: 'submenu-item-3' }],
  },
];
return <Menu items={items} />;

如果定义了children属性,antd会自动判断类型为SubMenuType(普通菜单项则为MenuItemType),让我们看一下官网给出的SubMenuType参数说明:
在这里插入图片描述
重要的两个属性框了出来,默认情况下, SubMenuType是不会触发我们定义在最外侧Menu组件上的onClick方法的,这时我们需要指定SubMenuTypeonTitleClick属性让其能响应点击事件,不够这不是本文考虑的主要问题,简单演示一下如何使用:

const items = [
  { label: '菜单项一', key: 'item-1' }, // 菜单项务必填写 key
  {
    label: '子菜单',
    key: 'submenu',
    onTitleClick: (e)=>{console.log('!',e.key)}
    children: [
    { label: '子菜单项1', key: 'submenu-item-1' },
    { label: '子菜单项2', key: 'submenu-item-2' },
    { label: '子菜单项3', key: 'submenu-item-3' }],
  },
];
// 子菜单并不会触发Menu上的onCick事件
return <Menu items={items} onClick={(e)=>{console.log('@',e.key}} />;  

接下来讲解如何将子菜单项修改为水平排列:
首先看一下默认的DOM属性:
在这里插入图片描述
可以看到宽度已经被限定为160px了,我们新建一个样式文件index.css,然后在主文件中引入(根据自己项目决定在哪引入),在这个样式文件中定义需要使用的样式。
看右侧开发界面中的DOM结果,这个子菜单弹窗包括一个外层divul,因此定义如下样式:

.headerSubMenu {
    width: 100% !important;
}

.headerSubMenu>ul {
    display: flex;
    flex-wrap: wrap;
}

将外层div的宽度设置为100%,在antd的样式中,ul会继承父节点的宽度。因此只需要指定ul列表的display属性为flex即可。
这里注意不能指定headerSubMenu display属性,因为antd需要使用这个属性让子菜单弹框消失,如果覆盖了这个属性,则弹窗永远不会消失。不过在开发过程中,我们可以覆盖这个属性,让其一直显示,方便我们修改样式。
指定子菜单的popupClassName属性:

const items = [
  { label: '菜单项一', key: 'item-1' }, // 菜单项务必填写 key
  {
    label: '子菜单',
    key: 'submenu',
    popupClassName: 'headerSubMenu ',
    children: [
    { label: '子菜单项1', key: 'submenu-item-1' },
    { label: '子菜单项2', key: 'submenu-item-2' },
    { label: '子菜单项3', key: 'submenu-item-3' }],
  },
];
return <Menu items={items} />;  

结束
在这里插入图片描述

广告

推一下自己正在写的视频网站项目,目前正在开发中,前端使用react+react-router+react-redux+redux/toolkihttps://github.com/fantasy995/FantasyVideo

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
react-antd-treetable是一个基于React和Ant Design框架开发的树形表格组件。该组件提供了一个功能强大且易用的界面,用于展示具有树形结构的数据。 react-antd-treetable组件主要特点如下: 1. 树形结构:组件支持展示具有树形结构的数据,每个节点可以包含节点,形成层叠的树状布局。 2. 数据排序:可通过点击表头进行排序操作,对树形表格中的数据进行升序或降序排序。 3. 行选择:可以通过点击表格的行来选择或取消选择特定的行数据。同时,也支持通过选择父节点实现对整个节点的选中或取消选中。 4. 编辑功能:支持在表格中对特定单元格的数据进行编辑,提供了输入框等组件供用户进行修改。 5. 展开/收起:可以通过点击加号和减号来展开或收起树形表格中的节点,以便更清晰地查看和管理数据。 6. 异步加载:支持异步加载数据,可以根据需要动态加载节点数据,提高了性能和效率。 7. 数据过滤:组件提供了一个搜索框,可以根据用户输入的关键字来过滤和筛选需要展示的数据,方便用户快速找到所需数据。 总的来说,react-antd-treetable是一个功能丰富且易于使用的树形表格组件,适用于需要展示树形数据结构的项目。无论是对于数据展示、编辑、排序、选择还是过滤等功能,该组件都提供了完善的解决方案,方便开发者快速构建出符合需求的树形表格界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值