在数组中,React redux不覆盖类似对象。
我期待的是具有不同属性的对象数组。另外,如果数组中有任何类似的属性,则计数将从1向上增加
dsf9zpds1#
Array.push不会创建数组,您应避免使用它。并且您不会返回Case CARTITEMS的新状态,您应始终为每个case子句返回一个新状态。另外,请尝试将CARTITEMScase子句拆分为两个不同的操作,一个用于增加数量,另一个用于添加新项,但请记住避免使用Array.push(),而使用and
Array.push
return {...state, newPropToOverride }
0s0u357o2#
问题的解决方法是
case ADDCARTITEMS: // adding items to cart and removing duplicates while counting them const isItem = state.CartItems.find(ci => ci.id === action.payload.id) if(isItem){ return { ...state, CartItems: state.CartItems.map(item => { if(item.id === action.payload.id){ return {...item, count: item.count + 1} } else { return item } }) } } else { return { ...state, CartItems: [...state.CartItems, {...action.payload, count: 1}] } }
2条答案
按热度按时间dsf9zpds1#
Array.push
不会创建数组,您应避免使用它。并且您不会返回Case CARTITEMS的新状态,您应始终为每个case子句返回一个新状态。另外,请尝试将CARTITEMScase子句拆分为两个不同的操作,一个用于增加数量,另一个用于添加新项,但请记住避免使用Array.push(),而使用and0s0u357o2#
问题的解决方法是