Ich verwende React, Redux & unveränderlich hier. Die Frage bezieht sich auf das Zusammenführen eines einfachen Js-Objekts in Immutable Map
obj.Verschmelzen von Objekten mit unveränderlichen js
Importieren Immutable.js:
import { List as iList,
Map as iMap } from "immutable";
action.payload
ist dies:
{
Preview : {
tabClass : "tabPreview tab activeTab"
},
Body : {
tabClass : "tabBody tab"
},
Sleeve : {
tabClass : "tabSleeve tab"
}
};
InitialTabState
erstellt mit 'Immutable.js' ist folgende:
const initialTabState = iList.of(
iMap({
tabClass : "tabPreview tab activeTab",
tabName : "Preview"
}),
iMap({
tabClass : "tabBody tab",
tabName : "Body"
}),
iMap({
tabClass : "tabSleeve tab",
tabName : "Sleeve"
})
);
Die Abschwächer-Funktion, die fusioniert die action.payload
an der Spitze, in die InitialTabState
oben ist dies:
const tabsState = (state = initialTabState, action) => {
let payload = action.payload;
switch(action.type) {
case(ENABLE_TAB):
return (
state.map((obj) => {
let curObjName = obj.get("tabName");
return (
obj.merge(payload[ curObjName ][ "tabName" ])
);
})
);
...
};
Allerdings scheint nichts zu passieren. Ich bekomme keinen Fehler, das Ausgabeobjekt bleibt identisch mit InitialTabState, wenn die Eigenschaft tabClass
darin sich gemäß der Zusammenführungsfunktion von Immutable.js ändern sollte.
Wie erwartet der Zustand, wenn er vom Reduzierer zurückkehrt? – max