Я пытаюсь создать приложение под названием Cake Shop для продажи и изготовления тортов. У меня проблема с уменьшением количества тортов в моем штате. Вот мой исходный импорт состояния {SELL_ONE_CAKE} из "./types & ...

0
jhon antoy 1 Мар 2021 в 18:35

1 ответ

Лучший ответ

У вашей текущей линии редукторов есть проблема:

return { ...state, cakes: state.cakes[0].qty - 1 };

Когда он запускается в первый раз, он устанавливает cakes в число - количество первого элемента в массиве - 1.

Вместо этого вы хотите установить cakes в новый массив с измененным количеством этого одного элемента:

return { ...state,
  cakes: state.cakes.map((item, index) => {
   if (index == 0) {
     return {...item, qty: item.qty - 1};
   } else {
     return item;
   }
  })
}

В реальном примере маловероятно, что ваше действие когда-либо просто изменит первый элемент массива жестко запрограммированным способом. Более вероятным сценарием было бы содержать идентификатор, который нужно изменить в вашем действии, а затем просто обновить элемент с помощью соответствующего идентификатора.

1
jnpdx 1 Мар 2021 в 16:01