Menu
基础导航基于 Bootstrap 5 的菜单组件,Menu 套件(Menu、MenuItem、MenuSubMenu、MenuGroup、MenuDivider)用于构建垂直与水平导航菜单,支持内嵌展开与弹出式子菜单、任意层级嵌套、分组与分隔线、图标、禁用与危险状态、单选与多选、受控/非受控的选中与展开状态、深色主题、折叠图标轨道与完整键盘导航
基础用法
Menu 渲染 `ul[role="menu"]`,MenuItem 渲染 `li[role="menuitem"]`,选中条目渲染高亮背景与主题色文本; 未设置 eventKey 的条目会按渲染位置自动生成 key
内嵌子菜单
mode="inline" 时子菜单在标题下方内嵌展开,支持任意层级嵌套;展开状态由 openKeys / defaultOpenKeys 维护,每一级默认缩进 inlineIndent 像素
垂直弹出子菜单
mode="vertical" 时点击标题在右侧弹出子菜单,弹出层靠近视口边缘会自动翻转方向, 点击条目后自动关闭
水平菜单
mode="horizontal" 时根条目横向排列,子菜单在标题下方弹出,默认 hover 触发(带 100ms 打开与 150ms 关闭延迟),点击标题可固定展开;弹出层内的嵌套子菜单内嵌展开
分组与分隔线
MenuGroup 渲染分组标题与条目列表,MenuDivider 渲染 `hr` 分隔线,两者都不可选中
深色主题
theme="dark" 切换深色配色:文本、悬停背景、禁用与分组颜色全部适配,弹出层同步渲染深色背景; 内嵌模式本身不带背景,可放入任意深色容器中
选中状态
当前选中:home
defaultActiveKey 提供非受控的初始选中,点击条目自动维护;传入 activeKey 后变为受控组件, 选中状态完全由 onSelect 驱动的外部 state 决定;selectable="false" 可整体关闭选中
多选
multiple 开启多选,点击已选中的条目会取消选中,activeKey / defaultActiveKey 使用数组形式
禁用与危险
disabled 条目与子菜单渲染禁用样式并设置 `aria-disabled`,不可选中也不可展开; danger 条目渲染危险色文本,适合删除类操作
折叠模式
inlineCollapsed 将菜单收缩为 collapsedWidth 宽度的图标轨道:条目只显示图标(与展开状态保持相同的左侧间距、左右留白对称)并自动生成悬停提示, 子菜单在右侧弹出飞入层,默认 hover 触发;折叠与展开由外部 state 驱动
自定义内容
条目内容完全自由:可以嵌入链接、徽标等任意元素,超长文本自动截断并显示省略号(配合 title 提供完整提示), 也可以用 className 定制样式