我构建了我的第一个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
}
}
谢谢
答案 0 :(得分:0)
我建议您返回Object.assing({}, item, selected: true)
,例如,这将确保您始终返回具有新状态的新对象。