REDUX
Redux — библиотека управления состояниями для JavaScript приложений. Чаще всего ее используют с проектами на React, но можно применять и с полноценными MVC JavaScript фреймворками, например, Angular.
Редукс — не обязательная часть веб-приложения. Эта библиотека нужна, чтобы сделать поведение приложения более последовательным, организовать работу компонентов в клиентской, серверной и нативной части, а также упростить тестирование. Ее выгодно использовать в сложных проектах, а также стартапах, которые планируется развивать и масштабировать.
Redux — контейнер для хранения состояний, облегчающий организацию между компонентами приложения. Когда компонентов, данных и связей между ними в проекте становится слишком много, нужно их структурировать и сделать более предсказуемыми. Иначе разработчики сами перестанут понимать, что и где делает их код. Для этого и используют Редакс — систему событий на основе Flux-архитектуры. Теперь, когда все состояния хранятся в одном месте, можно сделать так, что об изменениях в одном из компонентов, узнают другие, которым нужно об этом знать. Причем получают они эту информацию из контейнера-redux, после того, как туда попадут данные об изменениях в первом компоненте. Редакс, как хранилище, в этом случае защищает систему от ошибок, которые возникают, если не контролировать передачу состояний.
На практике, несмотря на простую логику, Redux гораздо более сложная система, и подходит она не для всех проектов. Чтобы можно было эффективно использовать эту библиотеку, приложение должно сохранять свое состояние в локальном хранилище, заполнять его на сервере, передавать клиенту как HTML и соответствовать еще нескольким техническим нюансам. Вам остается только довериться архитектору, который скажет, что для ваших задач в приложении лучшим решением будет такое, как поставить redux. Впрочем, он нужен не всегда — его можно заменить более простыми с технической точки зрения и универсальными готовыми решениями или написать уникальный модуль который будет делать то же самое, но в соответствии с логикой вашего проекта.
Хотя логика Redux довольно простая, а сама библиотека займет около двух мегабайт памяти выделенной для приложения, использование этого хранилища необязательно. В простых приложениях, которые не будут управлять событиями на стороне сервера в ней нет необходимости, но создать сложный и масштабный проект на React без нее будет очень сложно. Использование Редакс сделает систему более стабильной и надежной, а главное значительно облегчит масштабирование веб-приложения.