Redux Система управления состоянием. State management. Слой для работы с потоком данных. Store - в одном месте(в одном объекте). Единственный объект - store. Store JS объект, содержащий состояние приложения. Есть методы, которые позволяют взаимодействовать с state Reducer Иммутабельная чистая функция, принимающая action и, если нужно, модифицирующая копию state и возвращающая эту копию. Если ничего не модифицировалось, то возвращает старый state По сути нужен, чтобы убрать кучу логики из dispatch. Action Оповещает хранилище о том, что произошло какое-то действие Action Creator Объект у которого должно быть свойство type: ''; Текстом описывается что нужно сделать. Функция, возвращающая action. Ему делегируется создание объекта для action. Создаётся в BLL и напрямую импортируется в контейнерную компоненту. Dispatch Используется для обновления store. В диспатч отправляет action и какие-то данные. Однонаправленный поток данных - Пользователь нажимает кнопку - action со свойством type: actionName отправляется в store с помощью dispatch - store получает action, который отправил view, и передаёт его в каждый reducer - Каждый редьюсер проверяет тип action, если он совпадает, то вносит изменения, иначе возвращает state - store уведомляет все подписанные view и компоненты и они проверяют есть ли изменения. Если есть, то перерисовываются Как происходит изменение с помощью редюсера Копируется state, модифицируется копия, возвращается модифицированная копия, заменяя оригинал Connect Способ делиться данными между компонентами без необходимости прокидывать пропсы через всю последовательность компонентов. Таким образом передают глобальные вещи (тема, язык, текущий пользователь и тд) Context объявляется родителю, в него передаются нужные данные и все дочерние компоненты смогут обратиться к context напрямую. Схема работы connect - Создаёт контейнерную компоненту - Внутри неё рендерит презентационную - Внутрь презентационной прокидывает пропсы с помощью функций mapStateToProps и mapDispatchToProps - При изменениях в state вызывается локальный Subscribe и запускается функция mapStateToProps - Формируется новый объект, который сравнивает внутренности со старым объектом