如果你的状态真的看起来像
[{ id: 1, selected: false}, { id: 2, selected: false}]
相信你想用List#update:
let state = Immutable.fromJS([
{id: 1, selected: false},
{id: 2, selected: false}
]);
state = state.update(0, (artist) => artist.set('selected', true));
console.log(state); // [{id: 1, selected: true}, {id: 2, selected: false}]
// Note that this is equivalent to:
state = state.set(0, state.get(0).set('selected'));
但从您的代码看来,您的状态实际上看起来更像
{ artists: [{ id: 1, selected: false}, { id: 2, selected: false}] }
如果是这种情况,您将需要使用Map#updateIn:
let state = Immutable.fromJS({
artists: [
{id: 1, selected: false},
{id: 2, selected: false}
]
});
state = state.updateIn(['artists', 0], (artist) => artist.set('selected', true));
console.log(state); //{artists: [{id: 1, selected: true}, {id: 2, selected: false}]
// Note that this is equivalent to:
state = state.set(
'artists',
state.get(artists).set(
0,
state.get(artists).get(0).set('selected', true)
));