2015-06-23 3 views
1

Я создаю приложение React, используя библиотеку react-router и архитектуру Flux.React and Flux - Когда загружать данные?

Теперь возник вопрос. Должен ли я загружать все необходимые данные заранее или каждый маршрут загружать нужные ему данные, когда настало время? Было бы странно, когда пользователь вводит приложение через страницу редактирования, а когда он сохраняет форму, он переходит к списку объектов, но он пуст (имеет только один объект), пока данные не будут извлечены.

Какой был бы лучший подход?

ответ

3

Вы не хотите углубляться в предварительную загрузку данных в ожидании того, что пользователь собирается делать. Он улучшает UX экрана списка, но ухудшает UX экрана редактирования. Я был по той дороге. Сначала это нормально, но по мере изменения требований, и вы начинаете также, загружая это или загружая, UX действительно идет вниз.

В Flux вы должны загружать данные только в Action. Чтобы инициализировать данные для вашего компонента, вы можете вызвать соответствующее действие от componentWillMount().

Если вы беспокоитесь о том, что пользователь не видит данных при первом переходе к экрану списка, вы должны показать какой-то индикатор загрузки.

Если ваши данные загружаются медленно, вы должны реализовать прогрессивную схему загрузки (возможно, по 5 штук за раз).

Для примера «присмотритесь», просто откройте основную новостную ленту на facebook.com. Обратите внимание, что изначально (в зависимости от скорости вашего интернета) нет историй. Вы видите размытые коробки, в которые будут загружаться истории. По мере загрузки данных появляются истории. Они также имеют прогрессивную загрузку. Обратите внимание, что при прокрутке страницы вниз (быстро), вы увидите этот размытый бокс в нижней части страницы, прежде чем старые истории будут загружены и отображены.

+0

Так я и делаю прямо сейчас. Возможно, я выбрал плохой способ хранения данных по потоку. Например: В моем бэкенде у меня есть класс Ambient. Итак, в React я создал AmbientStore, где я сохраняю все объекты, загруженные с сервера. Таким образом, это неудобно, когда я получаю только одно эмбиент и сохраняю его в массиве амбиций. Вы понимаете? – Thiago

+0

Хорошо. Я делаю что-то подобное, но я храню список отдельно от текущего. Может быть, ваш магазин может быть что-то вроде 'Init() { this.data = { внешних условий: [{ID: 1}, {ID: 2}], selectedAmbient: {ID: 2}} }'. –

 Смежные вопросы

  • Нет связанных вопросов^_^