如何在Redux状态存储中的对象中添加新的键/值配对?

时间:2017-09-05 16:02:53

标签: reactjs redux

我正在使用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
        }
        ],
    };

我真的不知道适当的语法是什么,或者它是否可能。任何帮助将不胜感激。

2 个答案:

答案 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);