Расскажите как вы заполняете сторы в изоморфных flux-приложениях.
Если на клиенте мы можем запросить данные после того, как компонент выброшен в DOM. То на сервере стор нужно заполнить данными до ренедринга компонента. Распространённый приём: на родительские классы (
HigherOrderComponents
) вешается static-метод (например
fetchData
), инициирующий запрос к API и заполнение сторов. Он запускается и отрабатывает до того, как реакт начнет рендерить приложение.
<App>
<SomeItemsHigherOrderComponent> // <----- has static method `fetchData`
<SomeItems ... />
</SomeItemsHigherOrderComponent>
<OtherItemsHigherOrderComponent> // <----- has static method `fetchData`
<OtherItems ... />
</OtherItemsHigherOrderComponent>
</App>
В примерах на Github (
flummox,
redux) перед рендерингом запускаются все static-методы (то есть заполняются
все сторы), после чего собирается апп. Насколько это рационально? Почему не запускать
fetchData
только того компонента, который в данный момент будем рендерить? То есть почему не забирать только те данные, которые требуются для отображения текущей страницы? Если пользователь захочет перейти на следующую — делать следующий запрос.
P.S. Автор flummox дал пояснения в комментариях к компонентам (
один,
два), но так или иначе — хелпер всё равно написан так, чтобы перебирать все компоненты и запускать все их static-fetchData-методы.