Как добавить объекты в массив редуктора? - PullRequest
1 голос
/ 29 мая 2019

Мне нужно добавить объекты из действий в массив редукторов. Впервые значение добавляется к редуктору. Когда я отправляю действие снова, оно переопределяет существующее значение в массиве с объектом.

проверьте код ниже:

Действие:

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

Как обновить значение массива объектом из действия при каждой отправке?

1 Ответ

0 голосов
/ 29 мая 2019

Причина в том, что вы всегда устанавливаете значение 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;
  }
};
...