Uploaded by 03.vladislav.k

Redux - базовая теория

advertisement
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
- Формируется новый объект, который сравнивает внутренности со старым объектом
Download