Antd的Menu子菜单点击无法展开怎么办? 佳润酱~ 提问于 2026-02-01 19:32:26 阅读 53 组件 在用Ant Design的Menu组件做侧边栏时,设置了SubMenu子菜单,但点击箭头图标就是不展开,mode="inline"也写了,还试过设置defaultOpenKeys还是没反应… 代码是这样写的: 用户列表 权限设置 控制台没报错,但点击子菜单旁边的箭头就是没反应,样式显示子菜单始终是折叠状态,尝试过手动绑定onOpenChange但好像参数不对… Menu菜单导航组件 我来解答 赞 9 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 设计师树珂 Lv1 你这个情况多半是key值没设置对,或者事件绑定有问题。Antd的Menu组件必须给每个MenuItem和SubMenu都设置唯一的key属性,不然它没法正确管理展开状态。 直接用这个改好的代码: import React, { useState } from 'react'; import { Menu } from 'antd'; const { SubMenu } = Menu; function SiderMenu() { const [openKeys, setOpenKeys] = useState([]); const onOpenChange = (keys) => { setOpenKeys(keys); }; return ( <Menu mode="inline" openKeys={openKeys} onOpenChange={onOpenChange} > <SubMenu key="user" title="用户管理"> <Menu.Item key="user-list">用户列表</Menu.Item> <Menu.Item key="user-permission">权限设置</Menu.Item> </SubMenu> </Menu> ); } export default SiderMenu; 几个关键点: 1. 每个SubMenu和MenuItem都必须有唯一的key 2. 使用openKeys和onOpenChange来控制展开状态 3. 别忘了引入useState 我之前也踩过这个坑,光设置defaultOpenKeys没用,得配合状态管理才行。这代码我项目里在用,肯定能跑。 回复 点赞 2 2026-02-15 17:02 W″园园 Lv1 检查一下是不是少绑定 onOpenChange 了,或者 openKeys 状态没正确管理。antd 的 Menu 如果是受控模式,需要同时维护 openKeys 状态并绑定 onOpenChange。 直接用这个完整示例: import React, { useState } from 'react'; import { Menu } from 'antd'; import { UserOutlined, SettingOutlined } from '@ant-design/icons'; const App = () => { const [openKeys, setOpenKeys] = useState([]); const onOpenChange = (keys) => { const latestOpenKey = keys.find(key => !openKeys.includes(key)); if (latestOpenKey) { setOpenKeys(keys); } else { setOpenKeys(keys.filter(key => key !== latestOpenKey)); } }; return ( } title="用户列表"> 选项1 选项2 } title="权限设置"> 选项3 选项4 ); }; export default App; 这样就能正常展开子菜单了,别忘了加状态管理。 回复 点赞 5 2026-02-01 20:02 加载更多 相关推荐 1 回答 7 浏览 iView Menu菜单点击子菜单后父菜单自动折叠怎么解决? 在用iView的Menu组件做侧边栏时遇到个问题,当点击子菜单项后,父菜单会自动收起来。我需要点击子菜单时父菜单保持展开状态,但试过设置openeds和手动控制状态都不管用。 这是我的代码片段,使用的... 小钰烁 组件 2026-02-18 10:08:33 1 回答 86 浏览 Ant Design的Menu菜单怎么设置选中项后不自动展开子菜单? 我在用Ant Design的侧边栏菜单时遇到个奇怪的问题。设置了mode为inline,点击父菜单项展开子菜单后,如果直接点击父菜单的选中项,整个子菜单会突然收起来,这让我很困扰。 我尝试过设置def... UI士懿 组件 2026-02-16 13:29:29 2 回答 32 浏览 TDesign的Menu菜单动态数据怎么保持展开状态? 我在用TDesign做左侧导航栏时遇到了问题,菜单项是通过v-for动态生成的,但每次刷新页面后展开状态就会重置。我尝试用v-model:selected-keys和default-expand-al... W″树行 组件 2026-02-08 20:43:30 1 回答 36 浏览 Ant Design的Menu组件怎么让选中的项保持高亮? 在用Ant Design的侧边栏Menu做页面导航时,发现选中的菜单项跳转后刷新页面就变灰了,怎么才能让当前路由对应的菜单一直保持高亮状态啊? 我试过用selectedKeys绑定当前路由路径,但页面... 嘉俊~ 组件 2026-01-26 20:14:21 1 回答 12 浏览 Dropdown下拉菜单点击外部区域无法收起怎么办? 我用React写了一个带下拉菜单的组件,给document绑定了click事件来收起菜单,但有时候点击菜单内部链接也会触发收起,导致链接点不动。试过加stopPropagation也不行,代码大概是这... 诺曦 组件 2026-02-16 20:49:25 2 回答 48 浏览 UIkit的Dropdown下拉菜单点击外部无法关闭怎么办? 用UIkit的Dropdown组件时,下拉菜单弹出后点击外部区域或按Esc键都关不掉,明明按照文档写了uk-dropdown属性... 尝试过检查HTML结构和初始化代码,发现这样写的: <bu... 程序猿保霞 组件 2026-02-04 09:47:25 2 回答 90 浏览 Dropdown下拉菜单点击外部区域无法收起怎么办? 我在写一个带点击关闭的下拉菜单,用document监听点击事件判断是否在菜单外,但发现点击菜单选项时也会触发关闭,导致选不了项。 试过这样写: handleClickOutside = (e) =&g... 一佳妮 组件 2026-01-30 20:09:26 2 回答 138 浏览 Tooltip在移动端点击无法触发,该怎么设置? 用Antd的Tooltip组件做文字提示,移动端测试时点击元素没反应,但桌面端hover正常。试过加trigger='click',也设置了MouseEvent兼容,还是不行,怎么回事? 代码是这样写... UI秀玲 组件 2026-01-27 19:36:21 1 回答 33 浏览 Electron菜单项点击事件无法触发,是怎么回事? 我在用Electron+Vue做桌面应用时遇到了问题,给菜单项绑定了点击事件但完全没反应。之前按照文档在main.js里用Menu.setApplicationMenu注册了菜单模板,然后在渲染进程里... 爱学习的丽红 框架 2026-02-05 22:44:31 1 回答 43 浏览 点击按钮后提示信息显示但无法隐藏怎么办? 我在做一个表单验证功能,点击提交按钮时想用显示提示信息,但实际点击后提示虽然出现了却无法自动隐藏。试过用setTimeout设置延迟隐藏,但发现页面刷新导致效果失效。用的是Vue,代码逻辑是这样的: ... 俊俊 Dev 交互 2026-02-02 12:26:38
key值没设置对,或者事件绑定有问题。Antd的Menu组件必须给每个MenuItem和SubMenu都设置唯一的key属性,不然它没法正确管理展开状态。直接用这个改好的代码:
几个关键点:
1. 每个SubMenu和MenuItem都必须有唯一的key
2. 使用openKeys和onOpenChange来控制展开状态
3. 别忘了引入useState
我之前也踩过这个坑,光设置defaultOpenKeys没用,得配合状态管理才行。这代码我项目里在用,肯定能跑。
onOpenChange了,或者openKeys状态没正确管理。antd 的 Menu 如果是受控模式,需要同时维护openKeys状态并绑定onOpenChange。直接用这个完整示例:
这样就能正常展开子菜单了,别忘了加状态管理。