ant-design/components/menu/index.en-US.md

6.0 KiB

category cols type title cover
Components 1 Navigation Menu https://gw.alipayobjects.com/zos/alicdn/3XZcjGpvK/Menu.svg

A versatile menu for navigation.

When To Use

Navigation is an important part of any website, as a good navigation setup allows users to move around the site quickly and efficiently. Ant Design offers two navigation options: top and side. Top navigation provides all the categories and functions of the website. Side navigation provides the multi-level structure of the website.

More layouts with navigation: Layout.

Notes for developers

  • Menu is rendered as a ul element, so it only supports li and script-supporting elements as children nodes。Your customized node should be wrapped by Menu.Item.
  • Menu needs to collect its node structure, so its children should be Menu.* or encapsulated HOCs.

API

<Menu>
  <Menu.Item>Menu</Menu.Item>
  <SubMenu title="SubMenu">
    <Menu.Item>SubMenuItem</Menu.Item>
  </SubMenu>
</Menu>

Menu

Param Description Type Default value Version
defaultOpenKeys Array with the keys of default opened sub menus string[] -
defaultSelectedKeys Array with the keys of default selected menu items string[] -
expandIcon custom expand icon of submenu ReactNode | (props: SubMenuProps & { isSubMenu: boolean }) => ReactNode - 4.9.0
forceSubMenuRender Render submenu into DOM before it becomes visible boolean false
inlineCollapsed Specifies the collapsed status when menu is inline mode boolean -
inlineIndent Indent (in pixels) of inline menu items on each level number 24
mode Type of menu vertical | horizontal | inline vertical
multiple Allows selection of multiple items boolean false
openKeys Array with the keys of currently opened sub-menus string[] -
overflowedIndicator Customized the ellipsis icon when menu is collapsed horizontally ReactNode <EllipsisOutlined />
selectable Allows selecting menu items boolean true
selectedKeys Array with the keys of currently selected menu items string[] -
style Style of the root node CSSProperties -
subMenuCloseDelay Delay time to hide submenu when mouse leaves (in seconds) number 0.1
subMenuOpenDelay Delay time to show submenu when mouse enters, (in seconds) number 0
theme Color theme of the menu light | dark light
triggerSubMenuAction Which action can trigger submenu open/close hover | click hover
onClick Called when a menu item is clicked function({ item, key, keyPath, domEvent }) -
onDeselect Called when a menu item is deselected (multiple mode only) function({ item, key, keyPath, selectedKeys, domEvent }) -
onOpenChange Called when sub-menus are opened or closed function(openKeys: string[]) -
onSelect Called when a menu item is selected function({ item, key, keyPath, selectedKeys, domEvent }) -

More options in rc-menu

Menu.Item

Param Description Type Default value Version
danger Display the danger style boolean false 4.3.0
disabled Whether menu item is disabled boolean false
icon The icon of the menu item ReactNode - 4.2.0
key Unique ID of the menu item string -
title Set display title for collapsed item string -

Note: icon is a newly added prop in 4.2.0. For previous versions, please use the following method to define the icon.

<Menu.Item>
  <PieChartOutlined />
  <span>Option 1</span>
</Menu.Item>
<Menu.SubMenu
  title={
    <>
      <PieChartOutlined />
      <span>Option 2</span>
    </>
  }
>
  ...
</Menu.SubMenu>

Menu.SubMenu

Param Description Type Default value Version
children Sub-menus or sub-menu items Array<MenuItem | SubMenu> -
disabled Whether sub-menu is disabled boolean false
icon Icon of sub menu ReactNode - 4.2.0
key Unique ID of the sub-menu string -
popupClassName Sub-menu class name, not working when mode="inline" string -
popupOffset Sub-menu offset, not working when mode="inline" [number, number] -
title Title of sub menu ReactNode -
theme Color theme of the SubMenu (inherits from Menu by default) light | dark - 4.19.0
onTitleClick Callback executed when the sub-menu title is clicked function({ key, domEvent }) -

Menu.ItemGroup

Param Description Type Default value Version
children Sub-menu items MenuItem[] -
title The title of the group ReactNode -

Menu.Divider

Divider line in between menu items, only used in vertical popup Menu or Dropdown Menu.

Param Description Type Default value Version
dashed Whether line is dashed boolean false 4.17.0

FAQ

Why will Menu's children be rendered twice?

Menu collects structure info with twice-render to support HOC usage. Merging into one render may cause the logic to become much more complex. Contributions to help improve the collection logic are welcomed.