You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Ant Design下拉菜单中带子项的菜单项添加点击事件?

解决Ant Design Dropdown父菜单项(teamA)点击触发事件的问题

在你的代码中,带有子菜单的父菜单项(teamA)默认只会触发展开/收起子菜单的行为,不会触发Menu的onClick回调。要让它触发handleMenuClick,可以通过以下两种方式解决:

方法一:给父菜单项设置selectable: true

修改items数组,给teamA对应的菜单项添加selectable: true属性,标记父菜单项为可选择状态,点击时就会触发全局的onClick事件:

const items: MenuProps['items'] = [
  {
    key: '1',
    label: 'Company',
  },
  {
    key: '2',
    label: 'teamA',
    selectable: true, // 开启父菜单项的点击事件触发
    children: [
      {
        key: '2-1',
        label: 'teamA-a',
      },
    ],
  }
];

此时点击teamA,handleMenuClick会被触发,你可以通过e.key区分点击的菜单项:

const handleMenuClick: MenuProps['onClick'] = (e) => {
  if (e.key === '2') {
    message.info('Click on teamA.');
  } else {
    message.info('Click on menu item.');
  }
  console.log('click', e);
};

方法二:给父菜单项单独绑定点击事件

如果不需要全局统一处理,也可以直接在父菜单项上单独绑定onClick回调:

const items: MenuProps['items'] = [
  {
    key: '1',
    label: 'Company',
  },
  {
    key: '2',
    label: 'teamA',
    children: [
      {
        key: '2-1',
        label: 'teamA-a',
      },
    ],
    onClick: () => {
      message.info('Clicked teamA directly');
      console.log('click teamA');
    },
  }
];

额外修复:修正Dropdown按钮的显示问题

你的代码中{items[3]?.label}存在数组越界问题(items仅包含2个元素,索引最大为1),可以改为默认显示固定文本,或根据选中状态动态切换:

<Button>
  <Space>
    {'选择团队'}
    <DownOutlined />
  </Space>
</Button>

内容的提问来源于stack exchange,提问作者jinny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:33:20