Изучаю React.js + Redux, прошу советов по организации приложения
Изучаю React.js, в процессе возникли вопросы, не дающие покоя. Надеюсь, кто-то сможет подсказать. Конкретного кода не привожу, т.к. вопросы касаются организационного характера.
Существует некое комплексное веб приложение, рассмотрим только одну его часть: Есть раздел с некоторыми элементами, у элементов есть стандартные поля (id, имя, слаг ...), а так же категория. Приложение должно выводить список всех элементов, список элементов по категории, и отдельный элемент. При этом, есть определенные маршруты для этих страниц: /list - все элементы /list/{ category_slug } - список элементов по категории /list/{ category_slug }/{ item_slug } - страница элемента Я более-менее разобрался с Redux, как работаю экшны, редьюсеры, как подписывать компоненты на изменения в стор. Вопрос только, как это все лучше организовать? Что стоит подписывать на изменения стора? Глобальный для всего приложения компонент App, и потом ко всем потомкам пробрасывать нужные экшны и пропсы (между глобальным компонентом и целевым может оказаться 3-4 промежуточных компонента), или лучше подписывать конкретные страницы (страница списка, страница элемента)? Как лучше организовать выборку по категориям? Получить сразу все категории, а потом фильтровать? Опять же, все сразу получаться не будут, т.к. будет подгрузка по скроллу. Как лучше представить страницу элемента? Сделать общий объект для одного элемента и каждый раз изменять в нем данные, получая новые поля элементов при переходе на на страницы других элементов (т.е. при заходе на страницу делаем запрос к api и обновляем объект новыми данными), или дополнять значениями существующий массив элементов, полученный для отображения списка (так же делаем запрос к api, но при этом не затираем значения единственного объекта, а дополняем конкретный объект в массиве новыми полями)? Когда лучше всего вызывать экшн на получение данных? Получаю в componentDidMount, но не уверен, что это правильно. Может лучше в конструкторе? До этого не было опыта работы с одностраничными приложениями, поэтому не все еще понятно. Надеюсь на помощь, спасибо! |
Если еще актуально, то ко всем потомкам пробрасывать нужные экшны и пропсы не обязательно. можно использовать connect из библиотеки react-redux, и подключать необходимые экшены и стор к нужным компонентам.
экшн на получение данны- componentDidMount. |
Часовой пояс GMT +3, время: 08:30. |