Javascript 数组突变的重复检查
我构建了我的第一个react redux应用程序,如果我在reducer函数上修改了一个数组,我需要帮助理解 我正在测试的操作是选择项目: 根据操作传递的选择更新“selected”布尔属性 它是一个包含以下对象的数组:Javascript 数组突变的重复检查,javascript,arrays,redux,Javascript,Arrays,Redux,我构建了我的第一个react redux应用程序,如果我在reducer函数上修改了一个数组,我需要帮助理解 我正在测试的操作是选择项目: 根据操作传递的选择更新“selected”布尔属性 它是一个包含以下对象的数组: "allItems":[ { "id": 1, "name": "item1", "selected": false }, { "id": 2, "name": "i
"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
}
}
谢谢你我建议你返回一个
对象。例如,assing({},item,selected:true)
这将确保你总是返回一个具有新状态的新对象。这是所有项
切片的切片缩减器吗?是的,在第一行,假设它是常量项=(state=[],action)=>{
我现在就编辑这个问题好吧,也许你可以描述一下它是如何不起作用的。例如,在reducer处理操作后,状态如何不符合你的预期?感谢你的回答,根据你的建议我这样做了:case“SELECT_ITEM”:return state.map((ITEM,index)=>{if(ITEM.id==action.payload.id){return Object.assign({},item,{selected:true})}else{return Object.assign({},item,{selected:false})}})
现在可以了吗?