【发布时间】:2019-01-25 22:28:01
【问题描述】:
我尝试在循环包含 API 响应的状态数组时打印一行卡片。
renderItems(){
return (
<div>
{this.state.apiArr.map( (apiDetails, k) =>(
<SimpleMediaCard key={k} details={apiDetails}></SimpleMediaCard>))}
</div>
)
}
我稍后会以这种方式渲染它:
render() {
return (
<Grid container>
<Grid item xs={12} sm={8}>
{this.renderItems()}
</Grid>
</Grid>
)
}
但问题是这样我不会像我想要的那样在行中渲染 X 卡片,而是只渲染一张卡片,并且我看到卡片的道具随着映射的处理而变化。
我确信使用有效的唯一键,react 肯定会渲染另一个组件,而不是使用不同的道具重新渲染前一个组件。
【问题讨论】:
-
不清楚
this.state.apiArr中的数据包含什么。回调中每个k的值是多少? (看起来您可能想要(k, apiDetails)而不是(apiDetails, k),但根据给出的信息很难判断。) -
Grid应该控制东西的位置吗?你只有一个Grid item。 -
这就是我在收到 API 响应后填充状态数组的方式:
this.setState( prevState => ({ apiArr: [...prevState, response] }))。所以最后我有一个对象数组
标签: javascript reactjs rendering render