Как изменить свойство объекта в ImmutableList({})
, который находится внутри Immutable.Map({})
?Как изменить свойство объекта в ImmutableList ({}) внутри Immutable.Map ({})
у меня есть:
const initialState = Immutable.Map({
width: window.board.width,
height: window.board.height,
lines: Immutable.List([
Immutable.Map({id: 1, active: false, name: 'Some name'}),
Immutable.Map({id: 2, active: false, name: 'Sad name'}),
Immutable.Map({id: 3, active: true, name: 'Cool name'})
])
});
Допустим, я хочу, чтобы установить элемент с id
1 в списке. Затем измените его свойство на true. Я также хочу, чтобы свойство active было false для всех остальных элементов в списке.
Как это сделать? Заранее большое спасибо.
Edit (окончательное решение):
export function activateLine(lineId) {
return function (dispatch, getState) {
const updatedLines = getState().board.update('lines', Immutable.List(),
(oldList) => oldList.map((listItem) => {
return listItem.set("active", (listItem.get("id") === lineId));
})).get('lines');
return dispatch({
type: types.ACTIVATE_LINE,
payload: updatedLines
});
};
}
что вы имеете в виду изменения непреложный? дело в том, что вы не можете; вы должны дублировать и объединять ... – dandavis
Я хочу вернуть новую неизменяемую карту с новыми значениями. – Michal
Как его дублировать и объединить? Не могли бы вы показать мне пример? Это именно то, что я ищу. – Michal