首页 > 解决方案 > 不可变列表的映射仅更新最后一个索引

问题描述

我有这个声明:

  const players = immutable.fromJS({
    enabled: true,
    contract,
  })

我有一个复选框,基本上可以enabledtrue/false.

我也有我现在正在做的“全部启用”复选框:

playerKeys && playerKeys.map((playerKey, i) => {
          players.set(playerKey, players.get(playerKey).set('enabled', e.target.checked))
        })

我不确定我在使用此功能时做错了什么,但它只会更改列表的最后一个索引。

有没有办法修复我的“全部启用”复选框,以便更新我列表中的所有项目?

标签: javascriptreactjstypescriptimmutabilityimmutable.js

解决方案


您在设置值的同时设置了一个值,您可能只是错过了一个“)”

player.set(playerKey,players.get(playerKey)。set ('启用',e.target.checked)

这个指令players.get(playerKey)。set ('enabled', e.target.checked)不返回任何内容,因此您没有为父函数 player.set 设置任何内容

[编辑]

playerKeys && playerKeys.map((playerKey, i) => {
    players.get(playerKey).set('enabled', e.target.checked)
})

推荐阅读