Javascript-更新不可变记录中对象的值
我有一个不可变的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
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
}
}