You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在React中使用immutability-helper单次调用更新嵌套state多个值

解答

可以通过immutability-helper的update方法单次调用更新多个嵌套属性,你遇到的问题是JS对象同名键覆盖规则导致的,和库的能力无关。

你给update传入的第二个配置对象中,重复写了两次[element]作为顶层键,JS 中同一个对象内的重复键会被后定义的内容覆盖,所以实际传入库的配置只剩下更新fouls的逻辑,自然只有最后一行规则生效。

正确写法是把同一下标对应的多个更新规则,合并到同一个[element]对应的属性对象内即可,示例如下:

this.state={
    players:[{points: 0, fouls: 0, name: 'bob'}, {points: 0, fouls: 0, name: 'joe'}]
}

const elementIndex = this.state.players.findIndex(el => el.name === 'bob');

let updatedPlayers = update(this.state.players, {
  [elementIndex]: {
    points: {$set: 2 },
    fouls: {$set: 1 }
  }
});

this.setState({ players: updatedPlayers })

如果需要更新不同下标的多个元素,或者不同层级的多个属性,只要按照数据的嵌套结构,把所有更新规则写在同一个配置对象的对应层级下,单次update调用就可以全部生效。

内容的提问来源于stack exchange,提问作者Andreas C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:06:01