scriptWriter = (data:ItemType) => { let id = data.id console.log(this.state.items.map(el => el.id === id ? data : el)) //#1 this.setState({ items: this.state.items.map(el => el.id === id ? data : el) }) console.log(this.state.items) //#2}这是我的代码。我正在尝试更改状态数组中的元素。但是#1代码的结果和#2的结果是不同的。我想改变this.state.item结果#1。有什么解决办法吗?
1 回答
互换的青春
TA贡献1797条经验 获得超6个赞
这是因为 setState 本质上是异步的,使用回调来记录状态值,该状态值将在状态更新后调用:
this.setState({
items: this.state.items.map(el => el.id === id ? data : el)
},
() => console.log(this.state.items)
);
添加回答
举报
0/150
提交
取消