不覆盖数组中的类似对象的React redux

z9smfwbn  于 2022-11-12  发布在  React
关注(0)|答案(2)|浏览(123)

在数组中,React redux不覆盖类似对象。

我期待的是具有不同属性的对象数组。另外,如果数组中有任何类似的属性,则计数将从1向上增加

dsf9zpds

dsf9zpds1#

Array.push不会创建数组,您应避免使用它。并且您不会返回Case CARTITEMS的新状态,您应始终为每个case子句返回一个新状态。另外,请尝试将CARTITEMScase子句拆分为两个不同的操作,一个用于增加数量,另一个用于添加新项,但请记住避免使用Array.push(),而使用and

return {...state, newPropToOverride }
0s0u357o

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}]
        }
      }

相关问题