I want to create dynamic menu in antdesign, in 4.19.5 version
Here code for static menu
<Menu selectable selectedKeys={activeKey}>
{ <Menu.SubMenu title="Main Title 1" >
<Menu.Item key={'13'} onClick={(item) => SetActivekey([item.key])}><Link to={{ }} > Sub Title 1</Link> </Menu.Item>
<Menu.Item key={'14'} onClick={(item) => SetActivekey([item.key])}><Link to={{ }} > Sub Title 2</Link></Menu.Item>
<Menu.Item key={'15'} onClick={(item) => SetActivekey([item.key])}><Link to={{ }} > Sub Title 3</Link></Menu.Item>
</Menu.SubMenu>}
{ <Menu.SubMenu title="Main Title 2">
<Menu.Item key={'16'} onClick={(item) => SetActivekey([item.key])}><Link to={{ }} > Sub Title 4 </Link></Menu.Item>
<Menu.Item key={'17'} onClick={(item) => SetActivekey([item.key])}><Link to={{ }} > Sub Title 5 </Link></Menu.Item>
<Menu.Item key={'18'} onClick={(item) => SetActivekey([item.key])}><Link to={{ }} > Sub Title 6</Link></Menu.Item>
</Menu.SubMenu>}
</Menu>
Below is the data which I want to use to create menu
var Arr=[{ 'Main Title 1': ['Sub Title 1', 'Sub Title 2', 'Sub Title 3'] }, { 'Main Title 2': ['Sub Title 4', 'Sub Title 5', 'Sub Title 6'] }]
You can simply create a function to construct that Submenus, for example
const arr = [
{ "Main Title 1": ["Sub Title 1", "Sub Title 2", "Sub Title 3"] },
{ "Main Title 2": ["Sub Title 4", "Sub Title 5", "Sub Title 6"] }
];
function constructSubmenus(arr) {
return arr.map((e) => (
<Menu.SubMenu title={Object.keys(e)[0]}>
{Object.values(e)[0].map((f, i) => (
<Menu.Item key={i}> {f} </Menu.Item>
))}
</Menu.SubMenu>
));
}
return <Menu selectable>{constructSubmenus(arr)}</Menu>;
Another option is you can utilize the Menu
's attribute items
if you can construct the array that can satisfy as the arguments for that attribute. You can check it on the documentation https://ant.design/components/menu
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.