Я создаю интерфейс для поисковой системы, где почти все действия пользователя должны запускать одно и то же действие async для повторной выборки результатов поиска. Например, если пользователь вводит ключевое слово, тогда нам нужно получить /api/search?q=foo
, и, если позже они выберут категорию, мы получаем /api/search?q=foo&categoryId=bar
. Первоначально у меня были отдельные типы действий для FETCH_RESULTS
, SELECT_CATEGORY
, DESELECT_CATEGORY
и т.д. Я создал один создатель асинхронного действия для FETCH_RESULTS
, но остальные синхронны. Чем больше я думаю об этом, тем в итоге все они нуждаются в повторной выборке результатов из бэкэнд и обновлении состояния приложения на основе ответа от бэкэнда.
Будет ли иметь смысл использовать для каждого изменения один асинхронный action-creator? Или было бы лучше использовать создателей асинхронного действия для каждого отдельного действия пользователя (выбор ключевого слова, категории или фильтра)?
Я думаю, что преимущество гранулярных действий будет состоять в том, чтобы события более точно отражали то, что сделал пользователь (например, пользователь, выбранный в категории), а также заглядывать в полезную нагрузку, чтобы выяснить, что на самом деле изменилось, но все они очень похожи.