JGuang

菜单

Menu · Arco Design

交互预览
npm install @arco-design/web-react@2.66.18

菜单 Menu

收纳、排列并展示一系列选项的列表。

安装

npm install @arco-design/web-react@2.66.18

在入口引入 @arco-design/web-react/dist/css/arco.css,用 ConfigProvider 设置语言。React 19 项目还需在入口最先引入 @arco-design/web-react/es/_util/react-19-adapter,否则 Message、Modal 等命令式 API 无法渲染。

示例

  • 顶部导航菜单:设置 mode 为 horizontal 时,使用水平菜单。
  • 深色模式导航:通过 theme 指定主题,分为 light 和 dark 两种。
  • 缩起内嵌菜单:通过 collapse 来指定菜单收起。通过 renderItemInTooltip 指定菜单收起时,Tooltip 中展示的菜单项内容。
  • 内嵌菜单:菜单内可以嵌入多个子项,通过 defaultOpenKeys 可以设置默认打开的子项。
  • 不同大小菜单:通过 style 自由指定菜单的宽度和菜单项的高度。
  • 悬浮菜单:指定 mode 为 pop 可以使用悬浮菜单。
  • 悬浮按钮菜单:指定 mode 为 popButton 使用按钮组样式的悬浮菜单。

示例来自 Arco Design 官方仓库(MIT),固定在 npm 2.66.18 对应的提交;部分示例使用在线图片或上传地址,预览中网络请求被禁用。

API

参数名描述类型默认值版本
accordion开启手风琴效果boolean--
autoOpen默认展开所有多级菜单boolean--
autoScrollIntoView是否自动滚动选中项目到可见区域boolean--
collapse是否水平折叠收起菜单boolean--
hasCollapseButton是否内置折叠按钮boolean--
selectable菜单选项是否可选booleantrue-
levelIndent层级之间的缩进量number--
mode菜单类型,目前支持垂直(vertical)、水平菜单(horizontal)、弹出(pop)'vertical' | 'horizontal' | 'pop' | 'popButton'vertical-
theme菜单风格'light' | 'dark'light-
className节点类名string | string[]--
defaultOpenKeys初始展开的子菜单 key 数组string[]--
defaultSelectedKeys初始选中的菜单项 key 数组string[]--
ellipsis水平菜单是否自动溢出省略| boolean| {text?: ReactNode;}true2.24.0
icons用于定制图标{horizontalArrowDown?: ReactNode | null;popArrowRight?: ReactNode | null;collapseDefault?: ReactNode | null;collapseActive?: ReactNode | null;}--
openKeys展开的子菜单 key 数组(受控模式)string[]--
scrollConfig滚动到可见区域的配置项,接收所有scroll-into-view-if-needed的参数{ [key: string]: any }--
selectedKeys选中的菜单项 key 数组(受控模式)string[]--
style节点样式CSSProperties--
tooltipProps弹出模式下可接受所有 ToolTip 的 PropsPartial<TooltipProps>--
triggerProps弹出模式下可接受所有 Trigger 的 PropsPartial<TriggerProps>--
onClickMenuItem点击菜单项的回调(key: string, event, keyPath: string[]) => any-event in 2.15.0, keyPath in 2.19.0
onClickSubMenu点击子菜单标题的回调(key: string, openKeys: string[], keyPath: string[]) => void-keyPath in 2.19.0
onCollapseChange折叠状态改变时的回调(collapse: boolean) => void--
onEllipsisChange水平菜单自动超出省略发生变化时的回调(status: { lastVisibleIndex: number; overflowNodes: ReactNode[] }) => void-2.57.0
参数名描述类型默认值版本
selectable是否将多级菜单头也作为一个菜单项,支持点击选中等状态。boolean--
key唯一标志string (必填)--
title子菜单的标题string | ReactNode--
className节点类名string | string[]--
style节点样式CSSProperties--
triggerProps弹出模式下可接受所有 Trigger 的 PropsPartial<TriggerProps>-2.19.0
popup是否强制使用弹出模式,level 表示当前子菜单的层级boolean | ((level: number) => boolean)-2.8.0
参数名描述类型默认值
title菜单组的标题string | ReactNode-
className节点类名string | string[]-
style节点样式CSSProperties-
参数名描述类型默认值版本
disabled菜单项禁止选中boolean--
key唯一标志string (必填)--
className节点类名string | string[]--
style节点样式CSSProperties--
wrapper配置最外层标签,可以是 html 标签或是组件string | React.FC<any> | React.ComponentClass<any>div2.16.0
renderItemInTooltip菜单折叠时,指定在 Tooltip 中展示的菜单项节点() => ReactNode-2.51.0