首页 > 解决方案 > 状态内部的反应数组不会改变

问题描述

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。有什么解决办法吗?

标签: javascriptreactjstypescript

解决方案


这是因为 setState 本质上是异步的,使用回调来记录状态值,状态值将在状态更新后调用:

this.setState({
    items: this.state.items.map(el => el.id === id ? data : el)
  },
  () =>  console.log(this.state.items)
);

推荐阅读