reactjs - 我是 reactjs 和材料 ui 的新手,我想在导航栏中创建一个下拉菜单
问题描述
以下是我的代码
我想在导航栏上的 UI 元素和表格上放置一个下拉菜单,但无法做到这一点
LayoutMain.js
{links.map(({ icon: Icon, ...link }, index) => (
<ListItem
button
key={link.name}
onClick={() => gotoRoute(link.route)}
selected={link.route === location.pathname}
>
<ListItemIcon>
<Icon />
</ListItemIcon>
<ListItemText primary={link.name} />
</ListItem>
))}
</List>
链接.js
export const links = [
{
name: 'Dashboard',
icon: Dashboard,
route: '/',
},
{
name: 'UI Elements',
icon: ListAlt,
route: '/UIElements',
},
{
name: 'General',
icon: RadioButtonUnchecked,
route: '/General',
},
{
name: 'Tables',
icon: TableChart,
route: '/Tables'
}
];
解决方案
一种方法是使用 MUI 中的 Accordion 组件
{links.map(({ icon: Icon, ...link }, index) => {
if (link.name !== 'UI Elements') {
return
<ListItem
button
key={link.name}
onClick={() => gotoRoute(link.route)}
selected={link.route === location.pathname}
>
<ListItemIcon>
<Icon />
</ListItemIcon>
<ListItemText primary={link.name} />
</ListItem>
} else return
<Accordion>
<AccordionSummary
expandIcon={<ExpandMoreIcon />}
aria-controls="panel1a-content"
id="panel1a-header"
>
<Typography>{link.name}</Typography>
</AccordionSummary>
<AccordionDetails>
{uiElements.map((uiElement) => (
<ListItem>
<ListItemIcon>
<Icon />
</ListItemIcon>
<ListItemText primary={link.name} />
</ListItem>
)}
</AccordionDetails>
</Accordion>
})}
</List>
您需要在 uiElements 对象中使用另一个 uiElements 数组来映射附加信息。
推荐阅读
- javascript - 类中的重载运算符
- javascript - 如何访问 mapDispatchToProps 中的组件本地状态
- python - Folium 中的虚线折线
- javascript - 为什么两个看似相同的 JS 函数运行方式不同?
- c++ - Windows 可执行文件中的反调试和反逆向技术
- linux - 对于编写繁重的操作,docker 卷是否比直接绑定目录更好?
- ssas - 考虑到所有这些计算能力和存储都在云中可用,采用多维模型(立方体)有什么好处?
- node.js - AWS/Node.js S3 签名 URL 被拒绝
- asp.net-mvc - 等待asp.net返回新视图时如何显示加载消息
- python - 如果在 django rest 框架视图中有更简洁的方式来接受用户查询