我正在使用Redux建立一个React应用程序。
在reducer中,如何在对象列表的对象中添加字段?
例如,我的州可能看起来像:
items: [
{
name: "Bob",
age: 25
},
{
name: "Sally",
age: 17,
},
{
name: "Charles",
age: 54
},
{
name: "Derrick",
age: 34
}
]
如何让它看起来像这样?
items: [
{
name: "Bob",
age: 25,
selected: false
},
{
name: "Sally",
age: 17,
selected: false
},
{
name: "Charles",
age: 54
selected: false
},
{
name: "Derrick",
age: 34
selected: false
}
]
基本上,我想在对象中添加一个字段并将其应用于数组中的每个对象。
我为它创建了一个动作,在reducer中,我尝试了类似
的动作case ADD_FIELD:
return {
...state,
items: [
...state.items,
...{
selected: false
}
],
};
我真的不知道适当的语法是什么,或者它是否可能。任何帮助将不胜感激。
答案 0 :(得分:3)
您需要对数据运行#array.map并为每个对象添加一个键。
像这样:
case ADD_FIELD:
return {
...state,
items: state.items.map(el => ({
...el,
selected: false
}))
};
答案 1 :(得分:2)
您可以像下面给出的代码一样使用Array.prototype.map
。
var items = [
{
name: "Bob",
age: 25
},
{
name: "Sally",
age: 17,
},
{
name: "Charles",
age: 54
},
{
name: "Derrick",
age: 34
}
];
var result = items.map( item => Object.assign({}, item, { selected: false }) );
console.log(result);