Вы не хотите углубляться в предварительную загрузку данных в ожидании того, что пользователь собирается делать. Он улучшает UX экрана списка, но ухудшает UX экрана редактирования. Я был по той дороге. Сначала это нормально, но по мере изменения требований, и вы начинаете также, загружая это или загружая, UX действительно идет вниз.
В Flux вы должны загружать данные только в Action. Чтобы инициализировать данные для вашего компонента, вы можете вызвать соответствующее действие от componentWillMount()
.
Если вы беспокоитесь о том, что пользователь не видит данных при первом переходе к экрану списка, вы должны показать какой-то индикатор загрузки.
Если ваши данные загружаются медленно, вы должны реализовать прогрессивную схему загрузки (возможно, по 5 штук за раз).
Для примера «присмотритесь», просто откройте основную новостную ленту на facebook.com. Обратите внимание, что изначально (в зависимости от скорости вашего интернета) нет историй. Вы видите размытые коробки, в которые будут загружаться истории. По мере загрузки данных появляются истории. Они также имеют прогрессивную загрузку. Обратите внимание, что при прокрутке страницы вниз (быстро), вы увидите этот размытый бокс в нижней части страницы, прежде чем старые истории будут загружены и отображены.
Так я и делаю прямо сейчас. Возможно, я выбрал плохой способ хранения данных по потоку. Например: В моем бэкенде у меня есть класс Ambient. Итак, в React я создал AmbientStore, где я сохраняю все объекты, загруженные с сервера. Таким образом, это неудобно, когда я получаю только одно эмбиент и сохраняю его в массиве амбиций. Вы понимаете? – Thiago
Хорошо. Я делаю что-то подобное, но я храню список отдельно от текущего. Может быть, ваш магазин может быть что-то вроде 'Init() { this.data = { внешних условий: [{ID: 1}, {ID: 2}], selectedAmbient: {ID: 2}} }'. –