我有以下数据:
{
"data": {
"site": {
"siteMetadata": {
"siteLinks": [
{
"title": "title 1",
"submenu": [
{
"title": "test-1",
}
]
},
{
"title": "title 2",
"submenu": [
{
"title": "test-2",
}
]
},
{
"title": "title-3",
"submenu": [
{
"title": "test-3",
}
]
},
{
"title": "title-4",
"submenu": [
{
"title": "test-4",
}
]
}
]
}
}}}
我正在尝试映射以获得子菜单标题。我已经设法用下面的代码获得了第一个标题,但我正在努力获得地图中的地图。
import React from "react"
const Header = props => (
<div>
{props.siteLinks.map((item, key) => (
<div>
<li key={item.title}>{item.title}</li>
</div>
))}
</div>
)
export default Header任何帮助都将不胜感激
发布于 2019-11-27 22:42:47
您可以在第一个映射函数中添加第二个映射函数
import React from 'react';
const Header = props => (
<div>
{props.siteLinks.map((item, key) => (
<div key={item.title}>
<li>{item.title}</li>
{item.submenu.map((x)=>(
<li key={x.title}>{x.title}</li>
))}
</div>
))}
</div>
)
export default Header;发布于 2019-11-27 22:54:18
const Header = props => (
<div>
{props.siteLinks.map((item, key) => (
<div key={`${item.title}-${key}`}>
<h4>{item.title}</h4>
{item.submenu && item.submenu.map((subitem, i) => (
<li key={`${item.title}-${key}-${i}`}>{subitem.title}</li>
))}
</div>
))}
</div>
);
const res = {
data: {
site: {
siteMetadata: {
siteLinks: [
{
title: "title 1",
submenu: [
{
title: "test-1"
}
]
},
{
title: "title 2",
submenu: [
{
title: "test-2"
}
]
},
{
title: "title-3",
submenu: [
{
title: "test-3"
}
]
},
{
title: "title-4",
}
]
}
}
}
};
ReactDOM.render(
<Header siteLinks={res.data.site.siteMetadata.siteLinks} />,
document.getElementById("root")
);<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
发布于 2019-11-27 22:38:49
像这样的东西应该可以工作,只需接受嵌套数组并重新映射其输出即可。我建议对每一个都使用唯一的键,而不是标题。
import React from 'react';
import uuid from 'uuidv4';
const Header = props => (
<div>
{props.siteLinks.map((item, key) => (
<div>
<li key={uuid()}>
<h2>{item.title}</h2>
{item.submenu.map(subitem => (
<p key={uuid()}>{subitem.title}</p>
))}
</li>
</div>
))}
</div>
);
export default Header;https://stackoverflow.com/questions/59072348
复制相似问题