将对象分配给数组不适用于 redux
2021-02-08
30
我在 Reducer 函数中遇到了这种情况,我想将一个对象(即有效负载)推送到 items 数组。我在视频中看到了它并更改了一些代码。但现在它无法正常工作,并且不会将对象推送到数组中。情况如下:
case "ADD_ITEM_CART":
const cartItems = state.items.slice();
const tempItem = action.payload;
let alreadyExists = false;
cartItems.forEach((x)=>{
if(x._id === action.payload._id){
alreadyExists = true;
x.count++;
}
if(!alreadyExists){
cartItems.push({...tempItem,count:1})
}
});
localStorage.setItem("cartItems",JSON.stringify(cartItems));
return{
...state,
items: cartItems,
}
1个回答
这是因为
alreadyExists
在第一张已存在的卡出现后始终为
true
,因为它在
forEach
之外。
您应该在某些已存在的卡之后将其恢复为
false
:
if(!alreadyExists){
cartItems.push({...tempItem,count:1})
alreadyExists = false
break
}
Paul Alekseev
2021-02-08