Antd的Menu子菜单点击无法展开怎么办? 佳润酱~ 提问于 2026-02-01 19:32:26 阅读 120 组件 在用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没用,得配合状态管理才行。这代码我项目里在用,肯定能跑。 回复 点赞 4 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; 这样就能正常展开子菜单了,别忘了加状态管理。 回复 点赞 8 2026-02-01 20:02 加载更多 相关推荐 1 回答 28 浏览 Ant Design Menu 菜单点击后为啥不高亮? 我用 Ant Design 的 Menu 组件做侧边栏,点击菜单项后页面能跳转,但选中的项没有高亮显示。明明设置了 selectedKeys,可就是没效果,是我哪里写错了吗? 我的代码大概是这样: c... 长孙新霞 组件 2026-03-28 07:47:20 1 回答 27 浏览 Ant Design 的 Menu 菜单为什么点击后不自动高亮选中项? 我在用 Ant Design 的 Menu 组件做侧边栏导航,但点击菜单项后,页面路由变了,菜单却不会自动高亮当前选中的那一项。我明明传了 selectedKeys 啊,是不是哪里写错了? 我试过把 ... W″晓红 组件 2026-03-13 09:13:21 2 回答 40 浏览 iView 的 Menu 菜单展开后怎么保持高亮选中状态? 我在用 iView 的 Menu 组件做侧边栏导航,点击菜单项跳转路由后,页面刷新了,菜单就收起来了,而且当前页面对应的菜单项也没有高亮。我试过用 :active-name 绑定当前路由路径,但好像没... 小淇轩 组件 2026-02-24 20:55:19 2 回答 31 浏览 iView Menu菜单点击子菜单后父菜单自动折叠怎么解决? 在用iView的Menu组件做侧边栏时遇到个问题,当点击子菜单项后,父菜单会自动收起来。我需要点击子菜单时父菜单保持展开状态,但试过设置openeds和手动控制状态都不管用。 这是我的代码片段,使用的... 小钰烁 组件 2026-02-18 10:08:33 1 回答 42 浏览 TDesign Menu 菜单激活项不随路由变化更新怎么办? 我用 TDesign 的 Menu 组件做侧边栏导航,菜单项绑定了 router-link,但切换路由后 active 项没自动高亮。明明路径变了,菜单却还停留在上一个页面的选中状态,这是哪出问题了?... Top丶文华 组件 2026-03-19 08:18:22 1 回答 85 浏览 iView Menu菜单的activeName不生效怎么办? 我在用 iView 的 Menu 组件做侧边栏导航,想通过 activeName 控制当前激活的菜单项,但不管怎么改值,高亮始终不更新。我确认数据是响应式的,也试过 this.$nextTick,还是... FSD-海淇 组件 2026-03-14 12:01:19 2 回答 28 浏览 iView菜单active项无法高亮显示怎么办? 我在用 iView 的 Menu 组件做侧边栏导航,动态设置了 active-name,但点击菜单项后页面跳转了,高亮却没跟着变。控制台也没报错,就是不生效。 我试过在 mounted 里手动设置 t... 司徒红佑 组件 2026-03-12 09:35:16 2 回答 28 浏览 Material-UI 的 Menu 菜单点击后不关闭怎么办? 我用 Material-UI 写了个下拉菜单,点击菜单项之后菜单不会自动关闭,得点外面才行,这体验太差了。 我试过在 MenuItem 的 onClick 里手动调用 setAnchorEl(null... Des.玉飞 组件 2026-03-08 22:42:22 2 回答 114 浏览 Ant Design的Menu菜单怎么设置选中项后不自动展开子菜单? 我在用Ant Design的侧边栏菜单时遇到个奇怪的问题。设置了mode为inline,点击父菜单项展开子菜单后,如果直接点击父菜单的选中项,整个子菜单会突然收起来,这让我很困扰。 我尝试过设置def... UI士懿 组件 2026-02-16 13:29:29 2 回答 68 浏览 TDesign的Menu菜单动态数据怎么保持展开状态? 我在用TDesign做左侧导航栏时遇到了问题,菜单项是通过v-for动态生成的,但每次刷新页面后展开状态就会重置。我尝试用v-model:selected-keys和default-expand-al... W″树行 组件 2026-02-08 20:43:30
key值没设置对,或者事件绑定有问题。Antd的Menu组件必须给每个MenuItem和SubMenu都设置唯一的key属性,不然它没法正确管理展开状态。直接用这个改好的代码:
几个关键点:
1. 每个SubMenu和MenuItem都必须有唯一的key
2. 使用openKeys和onOpenChange来控制展开状态
3. 别忘了引入useState
我之前也踩过这个坑,光设置defaultOpenKeys没用,得配合状态管理才行。这代码我项目里在用,肯定能跑。
onOpenChange了,或者openKeys状态没正确管理。antd 的 Menu 如果是受控模式,需要同时维护openKeys状态并绑定onOpenChange。直接用这个完整示例:
这样就能正常展开子菜单了,别忘了加状态管理。