【发布时间】:2019-06-13 16:52:26
【问题描述】:
我正在尝试映射对象数组[{ingredient: '', quantity: ''}] 并通过解构从中获取属性,这就是代码
<ul>
{this.state.ingredients.map(({ ingredient, quantity }, k) => {
return (
<div key={k}>
<li key={k}>{ingredient} - {quantity}</li><br />
</div>
)
})}
</ul>
成分和数量返回 undefined 即使它们在状态中有值,但也有一些东西,<ul> 中的 <li> 与对象数组的长度一样多。那么这怎么可能呢?有什么办法可以解决吗?
这是控制台日志记录:
这是记录 state.ingredients 的图像
这就是我从服务器获取原料的方式
axios.get(`/api/recipe/${params.id}/${params.name}`)
.then(res => res.data)
.then(data=>{
var jdata = JSON.parse(data.recipe)
this.setState({
ingredients: jdata.ingredients,
... other properties
})
console.log(jdata.ingredients)
})
【问题讨论】:
-
看起来不错,确保你有
ingredients真的有objects包含所需的keys -
就在return()之前,尝试console.log(this.state.ingredients),结果如何?另外,您有一个具有键的外部节点,而内部 li 元素不需要键。
-
@FurkanO 我做到了,它第一次记录了空数组,然后又记录了两次有效数组。不管数组中只有两个对象
-
试试这个:
this.state.ingredients.map((item, key) => ( <span>{item}</span> ))remove additional {} -
没有提示状态如何从您当前的代码示例中获取其数据。因此,除非您使用与状态如何获取数据相关的代码来编辑您的问题,否则我们都无法帮助您。
标签: javascript arrays reactjs object