Javascript 将对象与不可变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

我在这里使用React、Redux和Immutable。问题是如何将普通Js对象合并到不可变的
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])
,它将更新选项卡的类。

当它从减速器返回时,您希望状态是什么样子?