Кто отвечает за получение данных с сервера в приложении Flux с кэшированием?

В примере приложения веб-чата Flux и на диаграмме README создается впечатление, что создатель действия должен получить данные с сервера.

поток данных потока

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

Я думаю, что лучше получать дернормализованные данные, когда это возможно, чтобы свести к минимуму вызовы xhr. Если магазин денормализован, например. MessageStore будет содержать все данные, необходимые для отображения сообщений. Каждое сообщение выглядит как

{
 "id": 42
 "message": "Héllo, you tried reactjs-flux too. Awesome isn't it!"
 "user": {id: 1337, username: "amirouche", bio: "maker"},
 "likes": [{id: 2600, username: "NinjaTurtle"}, {id: 2601, username: "Peer"}
}

Магазин может нести ответственность (через события?) за обновление UserStore частичными моделями пользователей.

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

В этой ситуации мне кажется, что создатель действия полезен только для отправки полезной нагрузки, т.е. это бесполезно.

Что вы думаете?


person amirouche    schedule 06.02.2015    source источник


Ответы (1)


Обычно мой магазин занимается получением данных. Делая это таким образом, убедитесь, что вся логика может управляться самим хранилищем, и у вас есть полный контроль над тем, когда/как/почему вы извлекаете данные.

Тот факт, что у вас также могут быть магазины, общающиеся друг с другом, также является еще одним аргументом в пользу того, почему магазины должны отвечать за обработку/выборку данных.

Кроме того, как описывает шаблон Flux: «Хранилища содержат состояние и логику приложения. Их роль чем-то похожа на модель в традиционном MVC, но они управляют состоянием многих объектов». получение данных из API/на стороне сервера.

person Jeremy D    schedule 24.02.2015
comment
спасибо за ответ (мой плохо сформулированный вопрос). Похоже, что диаграмма, которую я разместил, устарела, я могу найти ее на веб-сайте Flux. Благодарю. ссылка: facebook.github.io/flux/docs/overview.html#content< /а> - person amirouche; 02.03.2015