1
我正在使用React,Redux &這裏不可變。問題是關於將一個普通的Js對象合併到Immutable Map
obj中。將對象與不可變的js合併
導入Immutable.js:
import { List as iList,
Map as iMap } from "immutable";
action.payload
是這樣的:
{
Preview : {
tabClass : "tabPreview tab activeTab"
},
Body : {
tabClass : "tabBody tab"
},
Sleeve : {
tabClass : "tabSleeve tab"
}
};
InitialTabState
與 'Immutable.js' 創建是這樣的:
const initialTabState = iList.of(
iMap({
tabClass : "tabPreview tab activeTab",
tabName : "Preview"
}),
iMap({
tabClass : "tabBody tab",
tabName : "Body"
}),
iMap({
tabClass : "tabSleeve tab",
tabName : "Sleeve"
})
);
減速器功能,這正在合併頂部的action.payload
,進入InitialTabState
以上是這樣的:
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" ])
);
})
);
...
};
然而,似乎沒有任何事情發生。我沒有收到任何錯誤,輸出對象與InitialTabState保持一致,當它的屬性tabClass
應該根據來自Immutable.js的合併函數進行更改時。
你認爲從減速機返回時狀態如何? – max