Wie kann ich die Eigenschaft des Elements in ImmutableList({})
ändern, die in Immutable.Map({})
ist?Wie ändert man die Eigenschaft des Elements in ImmutableList ({}) in Immutable.Map ({})
ich habe:
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'})
])
});
Lets sagen, dass ich Artikel einstellen will mit id
1 in der Liste. Ändern Sie dann die Eigenschaft active in true. Ich möchte auch die Eigenschaft active für alle anderen Elemente in der Liste auf false setzen.
Wie mache ich das? Vielen Dank im Voraus.
Edit (Endlösung):
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
});
};
}
was meinst du mit Änderung eines unveränderlichen? Der Punkt ist, dass Sie nicht können; Du musst duplizieren und zusammenführen ... – dandavis
Ich möchte eine neue unveränderbare Karte mit neuen Werten zurückgeben. – Michal
Wie kann ich es duplizieren und zusammenführen? Könnten Sie mir bitte ein Beispiel zeigen? Genau danach suche ich. – Michal