я приведу аргумент в пользу «неумные» действия.
Поместив ответственность за сбор данных просмотра в своих действиях, вы связываете свои действия с требованиями к данным ваших просмотров.
В отличии от этого, общих действий, которые декларативно описывают намерение пользователя, или какой-то переход состояния в приложении, позволяет любой магазин, который отвечает на эти действия превратить намерение, в состояние с учетом конкретно взгляды подписались к нему.
Это поддается более многочисленным, но более мелким и специализированным магазинам. Я утверждаю, для этого стиля, потому что
- это дает большую гибкость в том, как виды потребления данных Магазин
- «умные» магазины, специализированные для представлений, которые потребляют их, будет меньше и в сочетании для сложных приложений, чем «умные» действия, от которых зависит потенциально много просмотров.
Целью Хранилища является предоставление данных для просмотра. Название «Действие» подсказывает мне, что его цель - описать изменение моего Приложения.
Предположим, вы должны добавить виджет к существующему представлению панели мониторинга, в котором отображаются некоторые причудливые новые агрегированные данные, которые только что вытащили.
С помощью «умных» действий вам может потребоваться изменить действие «обновить-панель» Action, чтобы использовать новый API. Однако «Обновление панели инструментов» в абстрактном смысле не изменилось. Требования к данным ваших просмотров - это то, что изменилось.
С помощью «немых» действий вы можете добавить новый магазин для нового виджета, который будет потреблять, и настроить его таким образом, чтобы при получении типа действия «обновить-панель» «Действие» он отправляет запрос на новые данные, и выдает его новому виджету, когда он будет готов. Для меня имеет смысл, что, когда на уровне представления нужны больше или разные данные, то, что я меняю, являются источниками этих данных: «Магазины».
Это сообщение может помочь http://www.code-experience.com/async-requests-with-react-js-and-flux-revisited/ –
Для тех, кто оценивает различные реализации шаблона потока, я бы очень рекомендуем взглянуть на Redux https://github.com/rackt/redux. Магазины реализованы как чистые функции, которые принимают текущее состояние и выпускают новую версию этого состояния. Поскольку они являются чистыми функциями, вопрос о том, могут ли они вызывать услуги в сети и хранилище, выводится из ваших рук: они не могут. – plaxdan