我有一个对象skills,我想迭代它并映射它的内容。该对象如下所示:
{
"_id": {
"$oid":"5d85b311e180652980824193"
},
"date":{
"$date":{ "$numberLong":"1569043209148" }
},
"title": "test",
"image":"test image",
"description":"test desc",
"__v":{
"$numberInt":"0"
}
}我正在使用MongoDB,我的映射如下所示:
componentDidMount() {
this.props.fetchSkills();
}
render() {
const { skills } = this.props
let skillData
if (skills.length === 0) {
return (
<p>There are no skills to display</p>
)
} else {
skillData = skills.map(skill => (
<div key={skill._id}>
<div>
<img src={skill.image} alt="" />
</div>
<div>
<h2>{skill.title}</h2>
<div>
<span>{skill.date}</span>
</div>
<div>
<p>{skill.description}</p>
</div>
</div>
</div>
))
}
return (
<div>
{skillData}
</div>
)
}但是,当我加载页面时,我会得到这个错误:
TypeError: skills.map不是一个函数
26 | )
27 | } else {
28 |
> 29 | skillData = skills.map(skill => (
30 | ^
31 | <div className="item" key={skill._id}>
32 | 我认为这是因为.map只能遍历数组,但我试图遍历一个对象。
发布于 2019-09-21 17:30:26
您需要一个array,才能使用.map()函数迭代它。
因此,只需将您的object转换成这样的array of objects:
[
{
"_id": {
"$oid":"5d85b311e180652980824193"
},
"date":{
"$date":{ "$numberLong":"1569043209148" }
},
"title": "test",
"image":"test image",
"description":"test desc",
"__v":{
"$numberInt":"0"
}
}
]现在您将能够成功地使用.map()
https://stackoverflow.com/questions/58042479
复制相似问题