redux检查数组突变

时间:2017-11-05 12:05:26

标签: javascript arrays redux

我构建了我的第一个react-redux应用程序,我需要帮助理解我是否在我的reducer函数上变换了一个数组。

我正在测试的动作是选择项目: 更新"选择" boolean属性根据动作传递的选择

它是一个包含对象的数组:

    "allItems":[
    {
        "id": 1,
        "name": "item1",
        "selected": false
    },
    {
        "id": 2,
        "name": "item2",
        "selected": false
    },
    {
        "id": 3,
        "name": "item3",
        "selected": false
    },
    {
        "id": 4,
        "name": "item4",
        "selected": false
    }
]

现在是减速器:

const allItems = (state=[], action) => {

switch(action.type){

    case "SELECT_ITEM" :

        return state.map( (item, index) => {
            if(item.id === action.payload.id){
                return { ...item, selected: true}
            }
            else
            {
                return {...item, selected: false}
            }
        })

    default:
    return state
    }

}

谢谢

1 个答案:

答案 0 :(得分:0)

我建议您返回Object.assing({}, item, selected: true),例如,这将确保您始终返回具有新状态的新对象。