【发布时间】:2018-05-11 01:33:11
【问题描述】:
我是新手。我正在尝试从 API 中提取数据,然后循环并显示它。 错误:无法读取未定义的属性“地图”。
API 数据正在通过,但似乎 React 在数据存储到 State 之前调用了循环列表。
constructor () {
super()
this.state = {
data:'',
}
}
componentWillMount(){
// Im using axios here to get the info, confirmed data coming in.
//更新“数据”状态以等于来自 api 调用的响应数据。
}
loopListings = () => {
return this.state.data.hits.map((item, i) => {
return(<div className="item-container" key={i}>
<div className="item-image"></div>
<div className="item-details">tssss</div>
</div>)
})
}
loopListings = () => {
return this.state.data.hits.map((item, i) => {
return(
<div className="item-container" key={i}>
<div className="item-image"></div>
<div className="item-details">tssss</div>
</div>)
})
}
render () {
return (
<div>
{this.loopListings()}
</div>
)
}
【问题讨论】:
-
在你的数据进来之前,它只是一个字符串。字符串不具有属性
hits。您应该在映射之前检查它是否存在或将初始状态设置为data: { hits: [] } -
看来我需要阅读更多关于生命周期的内容。我的印象是 componentWillMount 会在渲染之前运行。我正在使用 componentWillMount 区域内的 api 响应数据更新空数据状态。
标签: reactjs