Feb 24, 2017 · 1 min read
Если смотреть на Redux приложения с точки зрения DDD/ES, то можно провести следующие аналогии:
- Action creators (в первую очередь асинхронные: redux-thunk, redux-saga, redux-observable) — это command handlers: они достают данные из “репозитория”, изменяют их, выполняют разные side-effect’s и кидают события.
- Actions — это события: что-то в системе уже произошло и на это надо отреагировать изменением состояния.
- Reducers — это event store: по событиям сохраняют изменения в “репозитории”.
С точки зрения чистого ES, конечно, должен быть просто event store, а reducer’ы — это уже создание проекции данных.
С точки зрения чистого DDD должны быть отдельные агрегаты, которые считывают свое состояние из репозитория, изменяют свое состояние и сохраняют себя в репозитории, опционально кидая события.
С точки зрения Redux это все не важно, так как Redux — это реализация Flux и нефиг тут проводить всякие аналогии.
Правда, сам Redux/Flux не помогает толком ответить на вопрос когда код должен идти в reducers, а когда в action creators. Поэтому, возможно, на другие концепции и стоит поглядывать.
