Javascript React数组内部状态不为';不变 scriptWriter=(数据:ItemType)=>{ 设id=data.id console.log(this.state.items.map(el=>el.id==id?数据:el))/#1 这是我的国家({ items:this.state.items.map(el=>el.id==id?数据:el) }) console.log(this.state.items)/#2 }
这是我的密码。我正在尝试更改状态数组中的元素。但是Javascript React数组内部状态不为';不变 scriptWriter=(数据:ItemType)=>{ 设id=data.id console.log(this.state.items.map(el=>el.id==id?数据:el))/#1 这是我的国家({ items:this.state.items.map(el=>el.id==id?数据:el) }) console.log(this.state.items)/#2 },javascript,reactjs,typescript,Javascript,Reactjs,Typescript,这是我的密码。我正在尝试更改状态数组中的元素。但是#1代码的结果和#2的结果是不同的。我想将此.state.item更改为#1结果。有什么解决方案吗?这是因为setState本质上是异步的,请使用回调来记录状态值,该值将在状态更新后调用: this.setState({ items: this.state.items.map(el => el.id === id ? data : el) }, () => console.log(this.state.items)
#1
代码的结果和#2
的结果是不同的。我想将此.state.item
更改为#1
结果。有什么解决方案吗?这是因为setState本质上是异步的,请使用回调来记录状态值,该值将在状态更新后调用:
this.setState({
items: this.state.items.map(el => el.id === id ? data : el)
},
() => console.log(this.state.items)
);
状态更改是异步的,您不能
控制台。在下一行记录并查看更改