如何将对象添加到化简器数组中



我需要将对象从动作添加到化简器数组中。该值首次添加到减速器中。当我再次调度该操作时,它将覆盖数组中与对象的现有值。

检查以下代码:

行动:

let itemImgObj = {
  itemid: "",
  itemimgurl: ""
};
export const setItemsImages = (itemid, itemimgurl) => {
  itemImgObj.itemid = itemid;
  itemImgObj.itemimgurl = itemimgurl;
  console.log("as", itemImgObj);
  return {
    type: 'SET_ITEMS_IMAGES',
    itemImgObj
  };
};

还原剂:

const Reducer = (state = { cartItemsImages= [] }, action) => {
  console.log(action);
  switch (action.type) {
    case 'SET_ITEMS_IMAGES':
      return {
        ...state,
        cartItemsImages: [...state.cartItemsImages, action.itemImgObj]
      };
    default:
      return state;
  }
};

如何使用每次调度操作中的对象更新数组值?

原因是您始终将 state 的值设置为空数组的cartItemsImages。因此,每当调用化简器时,状态的值始终是一个空数组,这就是为什么它覆盖了现有值而不是附加新值的原因。

您可以执行以下代码:

// declare a new const which contains your cartItemsImages
const initialSate = {
   cartItemsImages: []
};
const Reducer = (state = initialSate, action) => {
  console.log(action);
  switch (action.type) {
    case 'SET_ITEMS_IMAGES':
      return {
        ...state,
        cartItemsImages: [...state.cartItemsImages, action.itemImgObj]
      };
    default:
      return state;
  }
};

相关内容

  • 没有找到相关文章

最新更新