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