我正在redux状态下使用规范化器,并且必须为UI指示器添加一个加载对象,
因此,如果我们假设这是我的规范化对象:
const myState = {
obj1: {
a:1,
b:2
},
obj2: {
a:2,
b:3
}
}
这是我要在属性obj1和obj2上执行的操作:我想动态添加此对象:
loading:{ update_a: false }
我该怎么做?我没有什么可以操纵Axios响应上的数组;我正在减速机上做。
答案 0 :(得分:2)
我们可以做这样的事情:
Object.keys(myState).reduce((acc, key) => {acc[key] = {...myState[key],loading:{ update_a: false } }; return acc;},{})
答案 1 :(得分:1)
我们将把现有状态拆开,并使用我们想要的添加属性来构建新版本:
Object.fromEntries(
Object.entries(myState)
.map(([key, obj]) => [
key,
{
...obj, // copy properties from the existing obj
loading: { // and add the loading property
update_a: false
}
}
])
);
希望在注释中比我的单行版本更容易阅读。
答案 2 :(得分:1)
您可以使用Object.entries
和reduce
const myState = {
obj1: {
a: 1,
b: 2
},
obj2: {
a: 2,
b: 3
}
}
const res = Object.entries(myState).reduce((all, [key, value]) => {
all[key] = {
...value,
loading: {
updated_a: false
}
}
return all;
}, {})
console.log(res)