English | [简体中文](../../zh/develop/3-12-Menu-introduction.md) # Usage - Jump to the corresponding page after click - Configuration of menu item on the left side of the console platform ![console-platform](../../zh/develop/images/menu/console-menu.png) - Configuration of menu item on the left side of the management platform ![management-platform](../../zh/develop/images/menu/admin-menu.png) - Support first-level menu with icon - Support secondary menu expand - Support menu item selected automatically switch after route change - Support for automatic processing of breadcrumbs in the right side # Code location - Console platform menu configuration `src/layouts/menu.jsx` - Management platform menu configuration `src/layouts/admin-menu.jsx` # How to use - The menu configuration in console and management platform are the same structure - Return a `renderMenu` function which return a configuration list ## first-level menu configuration - `path` - URL - `name` - Name of route - Name of menu item in menu list - Name corresponding to the first level menu in breadcrumbs - `key` - ID of the route - Unique - `icon` - the icon of menu - When the menu is fully expanded, the icon and name are displayed. - When the menu is folded, only the icon is displayed. - `hasBreadcrumb` - Whether to show breadcrumbs - Default is `true` - Take `home page` as an example: `hasBreadcrumb: false` - `hasChildren` - Whether the first-level menu contains a submenu - Default is `true` - First-level menu may not contain a submenu. For example `home page`. ```javascript { path: '/base/overview', name: t('Home'), key: '/home', icon: , hasBreadcrumb: false, hasChildren: false, } ``` - First-level menu default contains submenu. For example `compute page`. ```javascript { path: '/compute', name: t('Compute'), key: '/compute', icon: , children: [...] } ``` ## Submenu configuration - Submenu is configured in the `children` of first-level menu. - Pages that do not need to be displayed in the menu, such as detail page, create page, are configured in the `children` of the submenu. - Take flavor as an example ```javascript { path: '/compute/flavor', name: t('Flavor'), key: '/compute/flavor', level: 1, children: [ { path: /^\/compute\/flavor\/detail\/.[^/]+$/, name: t('Flavor Detail'), key: 'flavor-detail', level: 2, }, ], }, ``` - `path` - Route corresponding to the menu - `name` - name of menu - Name of menu item in menu list - Name in breadcrumbs - `key` - ID of menu - Unique - `level` - submenu correspond to `level=1` - `children` in submenu correspond to `level=2`