开发者问题收集

将对象分配给数组不适用于 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