PassFront
  1. PassFront
  2. База знаний
  3. Архитектурные паттерны

Что такое Flux и Redux как архитектурный паттерн с однонаправленным потоком данных?

Архитектурные паттерны

Flux — архитектура с однонаправленным потоком Action → Dispatcher → Store → View, где View меняет состояние только через новый Action. Redux упростил её до одного стора и чистых редьюсеров `(state, action) => newState`.

Зачем

  • Facebook предложил Flux в 2014 году: двусторонние связи моделей и представлений в MVC давали каскады обновлений, и было неясно, кто изменил состояние (известный пример — счётчик непрочитанных сообщений).
  • Однонаправленный поток даёт одну точку изменений: любое обновление — сериализуемый action, который можно залогировать и воспроизвести.

Три принципа Redux

  1. Единый источник истины — одно дерево состояния.
  2. Состояние только для чтения, меняется лишь через dispatch(action).
  3. Изменения описываются чистыми функциями-редьюсерами.

Паттерны внутри

  • Action — Command, subscribe — Observer, middleware — Chain of Responsibility.
  • Редьюсер — свёртка событий, как в Event Sourcing.

Плюсы и цена

  • Time-travel debugging, воспроизведение бага по логу действий, простые тесты редьюсеров.
  • Бойлерплейт — закрыт Redux Toolkit (createSlice с Immer).
  • Побочные эффекты вынесены в middleware: thunk, saga, listener.
  • Лишние перерисовки при неудачных селекторах — лечатся мемоизацией через reselect.
  • Ошибка — хранить серверный кэш в сторе вручную вместо RTK Query.

Коротко для собеседования

Во Flux и Redux состояние меняется только через action, проходящий по одному пути, поэтому любое изменение можно залогировать и воспроизвести. Redux свёл архитектуру к одному стору и чистым редьюсерам; сегодня его пишут через Redux Toolkit, а серверные данные держат в RTK Query.

Другие вопросы раздела