DevExtreme Vue - Overview
The Menu widget is a panel with clickable items. A click on an item opens a drop-down menu, which can contain several submenus.
The following code adds the Menu widget to your page. Note that the data source of the widget declares several nesting levels. First-level items produce items for the widget panel, or "root items". Other items go to drop-down menus.
jQuery
JavaScript
HTML
var menuItems = [{
    name: 'Video Players',
    items: [
        { name: 'HD Video Player', price: 220 },
        { name: 'SuperHD Video Player', price: 270 }
    ]
}, {
    name: 'Televisions',
    items: [
        { name: 'SuperLCD 42', price: 1200 },
        { name: 'SuperLED 42', price: 1450 },
        { name: 'SuperLED 50', price: 1600 }
    ]
}, {
    name: 'Monitors',
    items: [{
        name: '19"',
        items: [
            { name: 'DesktopLCD 19', price: 160 }
        ]
    }, {
        name: '21"',
        items: [
            { name: 'DesktopLCD 21', price: 170 },
            { name: 'DesktopLED 21', price: 175 }
        ]
    }]
}];
$(function() {
    $("#menuContainer").dxMenu({
        items: menuItems,
        displayExpr: "name"
    });
});<div id="menuContainer"></div>
Angular
HTML
TypeScript
<dx-menu
    [items]="menuItems"
    displayExpr="name">
</dx-menu>
import { DxMenuModule } from "devextreme-angular";
// ...
export class AppComponent {
    menuItems = [{
        name: 'Video Players',
        items: [
            { name: 'HD Video Player', price: 220 },
            { name: 'SuperHD Video Player', price: 270 }
        ]
    }, {
        name: 'Televisions',
        items: [
            { name: 'SuperLCD 42', price: 1200 },
            { name: 'SuperLED 42', price: 1450 },
            { name: 'SuperLED 50', price: 1600 }
        ]
    }, {
        name: 'Monitors',
        items: [{
            name: '19"',
            items: [
                { name: 'DesktopLCD 19', price: 160 }
            ]
        }, {
            name: '21"',
            items: [
                { name: 'DesktopLCD 21', price: 170 },
                { name: 'DesktopLED 21', price: 175 }
            ]
        }]
    }];
}
@NgModule({
    imports: [
        // ...
        DxMenuModule
    ],
    // ...
})Vue
App.vue
<template>
    <DxMenu
        :items="menuItems"
        display-expr="name"
    />
</template>
<script>
import 'devextreme/dist/css/dx.common.css';
import 'devextreme/dist/css/dx.light.css';
import DxMenu from 'devextreme-vue/menu';
export default {
    components: {
        DxMenu
    },
    data() {
        return {
            menuItems: [{
                name: 'Video Players',
                items: [
                    { name: 'HD Video Player', price: 220 },
                    { name: 'SuperHD Video Player', price: 270 }
                ]
            }, {
                name: 'Televisions',
                items: [
                    { name: 'SuperLCD 42', price: 1200 },
                    { name: 'SuperLED 42', price: 1450 },
                    { name: 'SuperLED 50', price: 1600 }
                ]
            }, {
                name: 'Monitors',
                items: [{
                    name: '19"',
                    items: [
                        { name: 'DesktopLCD 19', price: 160 }
                    ]
                }, {
                    name: '21"',
                    items: [
                        { name: 'DesktopLCD 21', price: 170 },
                        { name: 'DesktopLED 21', price: 175 }
                    ]
                }]
            }]
        };
    }
};
</script>React
App.js
import React from 'react';
import 'devextreme/dist/css/dx.common.css';
import 'devextreme/dist/css/dx.light.css';
import { Menu } from 'devextreme-react/menu';
const menuItems = [{
    name: 'Video Players',
    items: [
        { name: 'HD Video Player', price: 220 },
        { name: 'SuperHD Video Player', price: 270 }
    ]
}, {
    name: 'Televisions',
    items: [
        { name: 'SuperLCD 42', price: 1200 },
        { name: 'SuperLED 42', price: 1450 },
        { name: 'SuperLED 50', price: 1600 }
    ]
}, {
    name: 'Monitors',
    items: [{
        name: '19"',
        items: [
            { name: 'DesktopLCD 19', price: 160 }
        ]
    }, {
        name: '21"',
        items: [
            { name: 'DesktopLCD 21', price: 170 },
            { name: 'DesktopLED 21', price: 175 }
        ]
    }]
}];
class App extends React.Component {
    render() {
        return (
            <Menu
                items={menuItems}
                displayExpr="name"
            />
        );
    }
}
export default App;See Also
- Configure a Widget: Angular | Vue | React | jQuery | AngularJS | Knockout | ASP.NET MVC 5 | ASP.NET Core
- Menu - Access the Clicked Item
- Menu - Customize Item Appearance
- Menu - Change the Orientation
- Menu API Reference
        
            Feel free to share topic-related thoughts here.
If you have technical questions, please create a support ticket in the DevExpress Support Center.
    Thank you for the feedback!
If you have technical questions, please create a support ticket in the DevExpress Support Center.