Rém*_*ian 3 javascript ecmascript-6 reactjs
我正在研究ReactJS和Redux应用程序.在某些时候,我有一个元素列表(注释),每个元素都有一个数组(子任务).我想显示所有元素,并为每个元素显示其数组的内容.
我试过这个:
render(){
return(
<div>
<h3>{this.props.match.params.user}'s board</h3>
<Link to={`/settings/${this.props.match.params.user}`}>
<button>Settings</button>
</Link>
<Link to={`/new/${this.props.match.params.user}`}>
<button>Add note</button>
</Link>
{
this.props.notes.map((item,index) =>
<Link to={`/details/${item.name}`}>
<h4 key={index}>{item.name}</h4>
item.subtasks.map((sub, subindex)=>
<p key={subindex}>{sub}</p>)
</Link>
)
}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
但我得到了:
未捕获的ReferenceError:未定义子索引
什么是正确的方法呢?
你需要像这样包围第二个map内部{}括号
{
this.props.notes.map((item,index) =>
<Link to={`/details/${item.name}`}>
<h4 key={index}>{item.name}</h4>
{
item.subtasks.map((sub, subindex) =>
<p key={subindex}>{sub}</p>)
}
</Link>
)
}
Run Code Online (Sandbox Code Playgroud)
一个使用Vanilla JavaScript 的示例,您可以按照您的意愿在 React 中实现相同的方式。
let users = [
{
name: "Amoos",
skills: ["PHP", "MySQL"]
},
{
name: "Rifat",
skills: ["JavaScript", "React", "HTML"]
}
];
users.map(( user, index ) => {
console.log(`User: ${user.name}`)
{
user.skills.map(( skill, subIndex) => {
console.log(`Skill # ${subIndex}: ${skill} `)
})
}
}
)Run Code Online (Sandbox Code Playgroud)