Javascript React-使用贴图渲染对象数组
我正在尝试使用MapJavascript React-使用贴图渲染对象数组,javascript,arrays,reactjs,function,object,Javascript,Arrays,Reactjs,Function,Object,我正在尝试使用Map渲染一组对象,到目前为止,我只能将第一个项目渲染到浏览器中 我想我的.map函数出了点问题,但我对React和JS了解不够,无法找出问题所在 这是我的App.js文件: //import这里有东西 class App extends Component { constructor(props) { super(props); this.state = { items: [] }; this.componentWillMount
渲染一组对象,到目前为止,我只能将第一个项目渲染到浏览器中
我想我的.map函数出了点问题,但我对React和JS了解不够,无法找出问题所在
这是我的App.js文件:
//import
这里有东西
class App extends Component {
constructor(props) {
super(props);
this.state = {
items: []
};
this.componentWillMount = this.componentWillMount.bind(this);
}
componentWillMount() {
fetch('THE-JSON-URL-IS-HERE')
.then(res => res.json())
.then(data => {
this.setState({ items: data });
});
render() {
const { items } = this.state;
return (
<div className="App">
{ items.map((item, num) => {
return (
<div className="people">
<div className="elem">
<p key={num}>{item.elems}</p>
</div>
<p key={num}><strong>{item.name}</strong></p>
<p key={num}><small>{item.title}</small></p>
<div className="hidden">
<p key={num}><small>{item.email}</small></p>
<p key={num}><small><strong>Office: </strong>{item.office}</small></p>
</div>
{/* <p>{item.manager}</p> */}
</div>
);
})}
</div>
);
}
}
export default App;
等等。Abby的信息就是我所呈现的所有信息。因为您将数组和对象嵌套到第一个数组元素中,所以项目的长度是1,唯一的元素是Abby元素,其余数据嵌套在其中。要映射所有元素,项
应如下所示:
[
{
"elems": "Pr",
"name": "Abby Langdale",
"title": "President",
"email": "alangdale0@hubpages.com",
"office": "Javanrud",
"manager": ""
},
{
"elems": "Vp",
"name": "Johnnie Mouncey",
"title": "Vice President",
"email": "jmouncey0@cnet.com",
"office": "Canto",
"manager": ""
},
{
"elems": "Vp",
"name": "Concordia Burgwyn",
"title": "VP Quality Control",
"email": "cburgwyn0@dyndns.org",
"office": "Zhoukou",
"manager": ""
},
{
"elems": "En",
"name": "Prissie Sainsberry",
"title": "Web Developer IV",
"email": "psainsberry0@yellowbook.com",
"office": "Tugu",
"manager": null
}
]
如果需要维护管理器之间的关系,可以向每个对象添加一个id,并从另一个对象引用它
[
{
"elems": "Pr",
"name": "Abby Langdale",
"title": "President",
"email": "alangdale0@hubpages.com",
"office": "Javanrud",
"manager": "",
"id" : 1
},
{
"elems": "Vp",
"name": "Johnnie Mouncey",
"title": "Vice President",
"email": "jmouncey0@cnet.com",
"office": "Canto",
"manager": 1
},
...
]
您需要一个filter helper函数来正确查找管理器的名称,但它应该可以工作。因为您要将数组和对象嵌套到第一个数组元素中,所以项的长度为1,唯一的元素是Abby元素,其余数据嵌套在其中。要映射所有元素,项
应如下所示:
[
{
"elems": "Pr",
"name": "Abby Langdale",
"title": "President",
"email": "alangdale0@hubpages.com",
"office": "Javanrud",
"manager": ""
},
{
"elems": "Vp",
"name": "Johnnie Mouncey",
"title": "Vice President",
"email": "jmouncey0@cnet.com",
"office": "Canto",
"manager": ""
},
{
"elems": "Vp",
"name": "Concordia Burgwyn",
"title": "VP Quality Control",
"email": "cburgwyn0@dyndns.org",
"office": "Zhoukou",
"manager": ""
},
{
"elems": "En",
"name": "Prissie Sainsberry",
"title": "Web Developer IV",
"email": "psainsberry0@yellowbook.com",
"office": "Tugu",
"manager": null
}
]
如果需要维护管理器之间的关系,可以向每个对象添加一个id,并从另一个对象引用它
[
{
"elems": "Pr",
"name": "Abby Langdale",
"title": "President",
"email": "alangdale0@hubpages.com",
"office": "Javanrud",
"manager": "",
"id" : 1
},
{
"elems": "Vp",
"name": "Johnnie Mouncey",
"title": "Vice President",
"email": "jmouncey0@cnet.com",
"office": "Canto",
"manager": 1
},
...
]
您需要一个filter helper函数来正确查找经理的姓名,但它应该可以工作。请先尝试展平数组。您需要知道阵列将具有的最大级别数。展平后,您可以使用地图功能:
const flatItems = items.flat(3); // flatten up to 3 levels
items.map((item, num) => {
return ( <render your div> );
}
const flatItems=items.flat(3);//展平至3级
items.map((item,num)=>{
返回();
}
首先尝试展平阵列。您需要知道阵列将具有的最大层数。展平后,您可以使用地图功能:
const flatItems = items.flat(3); // flatten up to 3 levels
items.map((item, num) => {
return ( <render your div> );
}
const flatItems=items.flat(3);//最多展平3级
items.map((item,num)=>{
返回();
}
你有很多嵌套数组。你要么需要递归地展平这些数据,要么使用递归映射。方法还取决于你对嵌套项期望的输出,如果json示例是你的“数组”数据,你不是真的想呈现一个数组,而是一个继承人/对象图,你需要一些递归,而不是映射函数来呈现它。如果是这样的话,我建议修改你的标题和描述以清晰明了。你有很多嵌套数组。你要么需要递归地展平这个数据,要么使用递归映射。Approach还取决于嵌套项的预期输出,如果json示例是您的“数组”数据,您并不是真的要渲染数组,而是一个继承人/对象图,您需要一些递归,而不是映射函数来渲染它。如果是这样,我建议您修改标题和描述以保持清晰。谢谢!我感觉嵌套数组是问题的一部分。我将其展平,并能够渲染t他需要数据。谢谢!我感觉嵌套数组是问题的一部分。我将其展平并能够渲染数据。嘿,谢谢!我按照您的选项1展平了数组并渲染了数据。如果我必须维护管理者的关系,我会选择您的选项2。嘿,谢谢!我按照您的选项1展平了数组并渲染了数据。嘿,谢谢!我按照您的选项1展平了数组nd提供了数据。如果我必须维持经理之间的关系,我会选择你的选项2。