状态内的反应数组不会改变

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


Smart猫小萌
浏览 88回答 1
1回答

互换的青春

这是因为 setState 本质上是异步的,使用回调来记录状态值,该状态值将在状态更新后调用:this.setState({    items: this.state.items.map(el => el.id === id ? data : el)  },  () =>  console.log(this.state.items));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript