Если смотреть на 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. Поэтому, возможно, на другие концепции и стоит поглядывать.

    Краснояров Станислав

    Written by

    Full-stack разработчик, руководитель команды

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade