Redux: Почему бы не поместить действия и редукторы в один файл?

Я создаю приложение с Redux и почесываю голову о том, почему лучше всего размещать действия и редукторы в отдельных файлах. По крайней мере, это впечатление, которое я получаю от всех примеров.

Каждое действие или создатель действия представляется для сопоставления с одной функцией, вызываемой редуктором (внутри оператора switch). Разве было бы логично держать их вместе в одном файле? Он также упрощает использование одной и той же константы для типа действия и коммутатора, так как он не должен экспортироваться/импортироваться между файлами.

Ответы

Ответ 1

От создателя Редукса Дэн Абрамов:

Многие редукторы могут обрабатывать одно действие. Один редуктор может обрабатывать многие действия. Объединение их в совокупность отрицает многие преимущества того, как масштабируются приложения Flux и Redux. Это приводит к раздуванию кода и ненужной связи. Вы теряете гибкость реагирования на одно и то же действие из разных мест, и ваши создатели действия начинают действовать как "сеттеры", связанные с определенной формой состояния, тем самым связывая компоненты с ним.

Из документов Redux:

Мы предлагаем вам написать независимые небольшие функции редуктора, каждый из которых несет ответственность за обновления определенного состояния. Мы называем эту модель "композицией редуктора". Данное действие может быть обработано всеми, некоторыми или ни одним из них. Это приведет к тому, что компоненты будут отделены от фактических изменений данных, поскольку одно действие может повлиять на разные части дерева состояний, и нет необходимости, чтобы компонент знал об этом.

См. Этот разговор в твиттере и эту проблему на github для получения дополнительной информации.