为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Smart猫小萌 2023-04-20 16:57:52
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)

);


查看完整回答
反对 回复 2023-04-20
  • 1 回答
  • 0 关注
  • 59 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信