@evg_96

Как добавить поле в Record в immutable.js?

Есть каталог товаров в БД firebase.
На сайте есть корзина.
При нажатии добавить в корзину, в action передается id товара и он запрашивается из БД и добавляется в state.

5a95471b85a3b023390007.png

Сам state cart представлен в виде OrderedMap.
Как теперь в reducer изменить запрошенный товар и добавить туда поле count (кол-во товаров) перед добавлением в state?
Это нужно для того чтобы можно было изменять количество товаров в корзине.
Сейчас же товар просто добавляется в state как есть:
case ADD_PRODUCT_TO_CART_SUCCESS: {
  return state.setIn(["entities", payload.productUid], payload.product);
}
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
case ADD_PRODUCT_TO_CART_SUCCESS: {
  return state.setIn(["entities", payload.productUid], {...payload.product, count:  ВАШЕ_КОЛИЧЕСТВО});
}

В этом коде мы берем все что было в payload.product и по 1 полю добавляем в новый объект ( фигурные скобочки = новый объект), а так же добавляем поле count. Количество (count) вы так же, наверняка, будете передавать в экшене. Получится: count: payload.count (или как вы назовете поле в вашем экшене...)

Пример:
{ type: ADD_PRODUCT_TO_CART_SUCCESS,
    payload: { productUid, product, count: ваше_количество } // сюда count можно передавать из функции с помощью которой ваш экшен был создан...
  }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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