Я приведу аргумент в пользу «тупых» действий.
Возлагая ответственность за сбор данных о представлениях в свои Действия, вы связываете свои Действия с требованиями к данным ваших представлений.
Напротив, общие действия, которые декларативно описывают намерение пользователя или некоторый переход состояния в вашем приложении, позволяют любому хранилищу, которое реагирует на это действие, преобразовывать намерение в состояние, специально адаптированное для представлений, на которые оно подписано.
Это подходит для более многочисленных, но более мелких и более специализированных магазинов. Я выступаю за этот стиль, потому что
- это дает вам больше гибкости в том, как представления используют данные Store
- «умные» магазины, специализированные для представлений, которые их используют, будут меньше и менее связаны для сложных приложений, чем «умные» действия, от которых потенциально зависит много представлений.
Цель магазина - предоставить данные для представлений. Название «Действие» подсказывает мне, что его цель - описать изменение в моем приложении.
Предположим, вам нужно добавить виджет к существующему представлению Dashboard, в котором отображаются новые причудливые агрегированные данные, которые только что развернула ваша бэкэнд-группа.
При использовании «умных» действий вам может потребоваться изменить действие «refresh-dashboard», чтобы использовать новый API. Однако «Обновление дашборда» в абстрактном смысле не изменилось. Требования к данным ваших представлений - вот что изменилось.
С помощью «глупых» действий вы можете добавить новое хранилище для нового виджета и настроить его так, чтобы при получении типа действия «refresh-dashboard» он отправлял запрос на новые данные и предоставлял их новый виджет, когда он будет готов. Мне кажется логичным, что когда слою представления требуется больше или других данных, то, что я меняю, является источником этих данных: хранилищами.