@reyzele
Программист

При использовании React + redux где лучше делать логические вычисления для фильтров?

Есть приложение со сложной логикой. Разные данные приходят с бекенда и сохраняются в сторе. Используются библиотеки редакс сага, reselect с редаксом, данные сохраняются в сторе обычно, ummutable js не используется пока что, но есть желание в будущем его использовать. Использую конвертирование данных исходя от нужной модели, то есть в сторе держу только то, что необходимо и в конвертерах есть некоторая логика для вычисления нужных данных , которые в итоге сохраняются в сторе. Сложность заключается в том, что нужно фильтровать эти данные разными способами, по разным параметрам... Эту логику я делаю в селекторах, приходится исхитрятся в фильтрах использовать разные преобразования данных, карту соответствий, методы JS разные, регулярки и тп. Вопрос, правильно ли так делать или лучше как то в моделе сразу сохранять в сторе преобразованные данные и в селекторах не мутить сложную логику? Ну или вообще как вы считаете правильно делать, в сторе уже держать подготовленные и прошедшие преобразование данные или делать это в селекторах, ну или ещё где то в другом месте?
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 2
GreyCrew
@GreyCrew
Full-stack developer
Я бы саму логику фильтрации вынес в бэкэнд.
А на клиенте держал бы гет параметры фильтрации для конкретных наборов данных.
используя библиотеку https://www.npmjs.com/package/query-string или подобную можно удобно преобразовывать наборы фильтров из строки в объекты и обратно.
Ответ написан
@LEXA_JA
В сторе лучше держать нормализованные данные, так с ними проще работать. Если дополнительно хранить в сторе отфильтрованные\отсортированные данные, то могут начаться проблемы с их синхронизацией (удалили\изменили один элемент, нужно его же обновить\удалить из отфильтрованных данных).
Фильтрация это по сути бизнес-логика, её лучше сделать отдельно, как функцию от данных и критериев фильтрации. Критерии фильтрации и данные можно хранить в сторе. А в селекторе вызывать эту функцию, дернув данные и критерии фильтрации из стора.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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