NooNoo
@NooNoo
Aut cum scuto, aut in scuto

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

Всем привет!

Такая ситуация:
Есть три ссылки на страницу различных товаров, к примеру: Товар1, Товар2, Товар3. Использую react-router и туда передаю один и тот же компонент для отрисовки - . Ему в props прокидываю пришедшие данные из БД (MongoDB), список всех товаров соответственно. Когда пользователь переходит на страницу 'Товар1', то компонент должен отобразить все товары, относящиеся к данной категории.
Была идея по реализации: каждому товару в бд добавить поле "type" и сравнивать его с href-ом страницы в отдельной функции, которая вернет новый props и уже отфильтрованный props передать компоненту. Но меня мучает мысль, что есть более изящные способы. Если есть, то какие?

Спасибо!
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
Krasnodar_etc
@Krasnodar_etc
little front
С mongo у меня было примерно так:
1) В БД создаётся коллекция, условно, "Категории товаров", где лежат ваши "Товар1", ... со всеми необходимыми параметрами + у каждого свой id, который монга генерирует. Кстати, url-ы тоже тут хранить удобно
2) В коллекции с товарами у каждого товара действительно появляется type , только там лежит id нужного объекта из "Категории товаров"
3) При переходе на страницу "Товар1" на бэкенде в запросе к БД передаются параметры для фильтрации (те же данные из url) . Не надо тянуть такие фильтрации на фронт. Зачем вам получать из БД лишние данные?
4) Фронт просто отображает всё, что пришло с бэка

ИМХО, это наиболее правильное решение, но при желании его можно как угодно упрощать, главная идея - фильтрация должна происходить на уровне БД или бэкенде, но никак не на фронте
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Acme Crypto Corp Нижний Новгород
от 110 000 до 190 000 руб.
Stream Москва
от 130 000 до 180 000 руб.
20 февр. 2019, в 23:54
1000 руб./за проект
20 февр. 2019, в 23:26
25000 руб./за проект
20 февр. 2019, в 22:04
500 руб./за проект