Да, призыв к действию в рамках другого действия - это плохая практика. Действия должны быть атомарными; все изменения в Магазинах должны быть в ответ на одно действие. Они должны описывать одну вещь, которая произошла в реальном мире: пользователь нажал кнопку, сервер ответил данными, обновил экран и т. Д.
Большинство людей путаются действиями, когда они думают о них как императив инструкции (сначала сделайте A, затем сделайте B), а не описание того, что произошло, и отправную точку для реактивных процессов.
Вот почему я рекомендую людям, чтобы они назвали свои типы действий в прошедшем времени: BUTTON_CLICKED
. Это напоминает программисту основополагающего внешне описательного характера действий.
Действия, как газета, которая доставляется во все магазины, описывая, что произошло.
Вызов из магазинов - это почти всегда неправильная работа. Я могу только думать об одном исключении: когда Store отвечает на первое действие, запустив асинхронный процесс. Когда процесс асинхронности завершен, вы хотите отключить второе действие. Это происходит в случае вызова XHR на сервер. Но лучший способ - превратить XHR-код обработки в модуль Utils. Затем хранилище может ответить на первое действие, вызвав метод в модуле Utils, а затем модуль Utils имеет код для вызова второго действия, когда возвращается ответ сервера.