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



我有一个不可变的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 可能也是如此。尝试使用此不可变更新模式

return {
...state,
myObject: {
...state.myObject,
firstValue: true
}
}

最新更新