Loading...
Loading...
Create and configure the Syncfusion React Menu navigation component for hierarchical menu structures, dropdowns, and context menus. Use this skill whenever the user needs to implement menus, navigation bars, dropdown menus, hamburger menus, mobile menus, sub-menu positioning, menu item interactions, data-binding menus, RTL menu layouts, menu customization with icons/separators, event handling, or advanced features like scrollable menus, persistence, and item state management.
npx skill4agent add syncfusion/react-ui-components-skills syncfusion-react-menu| Component | Best For |
|---|---|
| Menu | Hierarchical navigation, dropdown menus, file menus, hamburger menus |
| Navbar | Linear top navigation |
| Sidebar | Fixed side navigation panel |
| Tabs | Flat content sections with switching |
import { MenuComponent, MenuItemModel } from '@syncfusion/ej2-react-navigations';
import React from 'react';
function App() {
const menuItems: MenuItemModel[] = [
{
text: 'File',
items: [
{ text: 'New' },
{ text: 'Open' },
{ text: 'Save' }
]
},
{
text: 'Edit',
items: [
{ text: 'Cut' },
{ text: 'Copy' },
{ text: 'Paste' }
]
}
];
return (
<MenuComponent items={menuItems}></MenuComponent>
);
}
export default App;import { MenuComponent, MenuItemModel } from '@syncfusion/ej2-react-navigations';
import * as React from 'react';
function App() {
// Define menu structure
const menuItems: MenuItemModel[] = [
{
text: 'File',
items: [
{ text: 'New' },
{ text: 'Open' },
{ text: 'Save' },
{ separator: true },
{ text: 'Exit' }
]
},
{
text: 'Edit',
items: [
{ text: 'Cut' },
{ text: 'Copy' },
{ text: 'Paste' }
]
},
{
text: 'Help'
}
];
return (
<MenuComponent items={menuItems}></MenuComponent>
);
}
export default App;| Property | Type | Default | Purpose |
|---|---|---|---|
| MenuItemModel[] | [] | Menu items to render |
| FieldSettingsModel | - | Data field mappings |
| boolean | false | Enable mobile hamburger view |
| boolean | true | Allow scrolling for large menus |
| boolean | false | Save state across sessions |
| boolean | false | Right-to-left text support |
| Orientation | Horizontal | Layout direction |
| MenuAnimationSettings | - | Animation configuration |
| number | 400 | Sub-menu hover delay (ms) |
| boolean | false | Show items only on click |
| boolean | true | Sanitize HTML content |
| string | - | Custom CSS classes |
| string | 'en-US' | Culture/language setting |
| string | - | Element selector for hamburger |
| string | - | Hamburger mode title text |
| Method | Parameters | Purpose |
|---|---|---|
| item, selector | Insert before a menu item |
| item, selector | Insert after a menu item |
| selectors | Remove items by selector |
| selectors, enable | Enable/disable items |
| selectors | Show hidden items |
| selectors | Hide visible items |
| item, selector | Update item properties |
| selector | Get item index in menu |
| - | Open hamburger menu |
| - | Close hamburger menu |
| - | Cleanup component |
| Event | Trigger | Argument Type |
|---|---|---|
| Menu item clicked | MenuEventArgs |
| Before sub-menu opens | BeforeOpenCloseMenuEventArgs |
| Before sub-menu closes | BeforeOpenCloseMenuEventArgs |
| After sub-menu opens | OpenCloseMenuEventArgs |
| After sub-menu closes | OpenCloseMenuEventArgs |
| Before item renders | BeforeItemRenderEventArgs |
| Component initialized | Object |
const handleMenuSelect = (args) => {
console.log(`Selected: ${args.item.text}`);
// Handle the selected menu item
};
<MenuComponent
items={menuItems}
select={handleMenuSelect}
></MenuComponent>let menuObj: MenuComponent;
const addMenuItem = () => {
menuObj.insertAfter([{ text: 'New Item' }], 'File');
};
<MenuComponent
ref={(menu) => (menuObj = menu)}
items={menuItems}
></MenuComponent>const handleBeforeOpen = (args) => {
if (args.item.text === 'Save') {
args.item.disabled = true; // Disable based on condition
}
};
<MenuComponent
items={menuItems}
beforeOpen={handleBeforeOpen}
></MenuComponent>