@Jeux_Onmobil

Как лучше сделать корзину React?

Всем привет, пишу маленький интернет магазин на Ract + Redux
Подошла задача писать корзину.
Есть массив для хранения всех товаров items
Состоит он из подобных объектов:
{
        id: 1,
        name: 'Название товара',
        art: '11111111',
        desc: 'Описание',
        price: 5000,
        sizes: [10.5, 11, 12, 12.5],
        sex: 'Унисекс',
        sale: 40, 
        publicationDate: '16.06.2022',
        img: '1.png'
    }

Я решил сделать массив basketItems где будут храниться id товаров, которые добавили в корзину. (Нажали на кнопку "Добавить в корзину - запушился id товара, где нажали")
Допустим
const basketItemsData = [1, 4, 10]
И когда загружается страница корзины, рендерится массив items (всех товаров) но отфильтрованный по id - как итог отображаются 3 позиции

Этот подход нормальный? Если нет, то как лучше написать?
  • Вопрос задан
  • 323 просмотра
Решения вопроса 1
SeaInside
@SeaInside
15 лет пилю все эти штуки
Нет, подход неправильный.

Несколько вопросов, позволяющих натолкнуться на правильную мысль:
1) Что, если товаров несколько миллионов? Будете хранить весь миллион `items` и выдёргивать его каждый раз?
2) Что, если в корзину нужно положить два одинаковых товара?
3) Обычно товар в корзине не имеет все характеристики сразу (`sizes` в вашем случае) сразу, характеризуясь лишь некоторыми свойствами

А ещё в корзинах обычно дофига внутренней бизнес-логики, которую на фронте держать...
Ну, наверное, можно, но практика показывает, что чем сложнее требования бизнеса, тем менее целесообразно это всё делать на фронте.
Всякие "если товаров определённого типа с определённым свойством в корзине более пяти штук, а ещё сегодня пятница и в админке поставлена галочка, то примени к этим товарам скидку в 50%, но не более 10 000 рублей, не суммируя с другими скидками" - это традиционно задача на бэкенд.

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

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

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