【发布时间】:2023-08-11 18:02:01
【问题描述】:
假设我有一个像这样的对象,用于在 React 中创建材质导航栏:
const menu = {
DASHBOARD: [
{
name: ViewPage1
type: VIEW
},
{
name: ViewPage2
type: VIEW
},
{
name: RunPage1
type: RUN
},
{
name: RunPage2
type: RUN
},
],
}
我的目标是只渲染一次“类型”标签(查看或运行)。所以有这样的东西:
----VIEW
ViewPage1
ViewPage2
----RUN
RunPage1
RunPage2
我试过这样:
{Object.keys(menu).map((key) => (
<>
<Button>
{key}
</Button>
<Menu>
<div>
{menu[key].map((menuItem) => (
<TypeLabelComponent label={menuItem.type} size="small" variant="outlined" />
<MenuItem>
{menuItem.name}
</MenuItem>
))}
</div>
</Menu>
</>
))}
但很明显,它每次在地图中循环时都会渲染 TYPE 标签。所以我的结果如下:
----VIEW
ViewPage1
----VIEW
ViewPage2
----RUN
RunPage1
----RUN
RunPage2
如何处理此问题以仅在尚未呈现 TYPE 标签的情况下呈现它?
【问题讨论】:
-
按
type分组菜单对象。此外,您在映射项目中缺少key道具并为内部.map()内容包装<></>。
标签: javascript arrays reactjs object ecmascript-6