Javascript 将对象与不可变js合并
我在这里使用React、Redux和Immutable。问题是如何将普通Js对象合并到不可变的Javascript 将对象与不可变js合并,javascript,object,immutability,redux,immutable.js,Javascript,Object,Immutability,Redux,Immutable.js,我在这里使用React、Redux和Immutable。问题是如何将普通Js对象合并到不可变的Mapobj中 导入Immutable.js: import { List as iList, Map as iMap } from "immutable"; action.payload是这样的: { Preview : { tabClass : "tabPreview tab activeTab" }, Body : { t
Map
obj中
导入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"
})
);
减速机功能将顶部的动作有效载荷
合并到上面的初始状态
中,如下所示:
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" ] )
);
})
);
...
};
然而,似乎什么也没有发生。我没有收到任何错误,当输出对象中的属性
tabClass
应根据Immutable.js中的合并函数进行更改时,输出对象保持与InitialTabState相同。obj.merge(负载[curObjName][“tabName]”)
合并负载上不存在的属性。我相信您需要obj.merge(payload[curObjName])
,它将更新选项卡的类。当它从减速器返回时,您希望状态是什么样子?