@Deadorik

Как при повторном добавлении товара в корзину вместо дублирования увеличивать его количество?

Пытаюсь написать корзину на react/redux. Проблема в редюсере. Сейчас логика такая, при клике на "Добавить в корзину" добавляется новый объект в массив корзины, будь то один и тот же товар. И в корзине выводится несколько одинаковых товаров подряд. Как сделать, чтобы одинаковые товары суммировались? Как изменить редюсер или не в ту сторону копаю?

Вот от этого хочу избавиться, чтобы считалось количество одного товара:

631c8930429b9086390249.jpeg
const defaultState = {
    products: [],
    count: 1,
    id: []
}
// Редюсер
export const inCartReducer = (state = defaultState, action) => {
    switch (action.type) {
        case ADD_PRODUCT:
            return {...state, products: [...state.products, action.payload]};
  • Вопрос задан
  • 513 просмотров
Решения вопроса 1
0xD34F
@0xD34F
case ADD_PRODUCT:
  const item = state.products.find(n => n.id === action.payload.id);
  return {
    ...state,
    products: item
      ? state.products.map(n => n === item ? { ...n, count: n.count + 1 } : n)
      : [ ...state.products, { ...action.payload, count: 1 } ],
  };
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы