Javascript-更新不可变记录中对象的值

Javascript-更新不可变记录中对象的值,javascript,object,javascript-objects,immutability,Javascript,Object,Javascript Objects,Immutability,我有一个不可变的Javascript对象(来自不可变库),如下所示 const myObj = Immutable.Record({ id: 1, myObject: { firstValue: false, secondValue: false, }, }); 我想使用Immutable.Record类的set方法将firstValue属性更新为true,但由于此对象正在使用Flux用作React状态,因此我想在一行中执行此操作,如下所示: reduce(stat

我有一个不可变的Javascript对象(来自不可变库),如下所示

const myObj = Immutable.Record({
  id: 1,
  myObject: {
    firstValue: false,
    secondValue: false,
  },
});
我想使用Immutable.Record类的set方法将firstValue属性更新为true,但由于此对象正在使用Flux用作React状态,因此我想在一行中执行此操作,如下所示:

reduce(state, action){
    switch(action.type){
        case ActionTypes.CHANGE_VALUE:
            //The value to change is stored in action.value
            return state.set("myObject", //AddCodeHere);
    }
}
action.value变量是必需的,因此我必须使用该变量更新该值

我该怎么做

编辑

我找到了答案(有点复杂,但它是有效的)。它使用ES6最新的东西之一,Object.fromEntries方法

return state.set(
          "myObject",
          Object.fromEntries(
            Object.entries(state.get("myObj")).map(([k, v]) =>
              k === action.value ? [k, !v] : [k, v]
            )
          )
        );

我从未使用过Flux,但我认为对于Redux可能也是一样。试着用这个


我正试图按照你说的做,但问题是我需要使用变量action.value来搜索对象的正确键。如果我试图用action.value替换firstValue,它表示我正在犯错误。如果我尝试像myObject[action.value]一样放置,请尝试使用此
[]
更新键:
返回{…state,myObject:{…state.myObject[action.value]:true}
,这也不起作用,我很抱歉。不管怎样,我发现答案到处都是,我将把它作为我问题的编辑。谢谢你的努力
return {
  ...state,
  myObject: {
    ...state.myObject,
    firstValue: true
  }
}