О библиотеке¶
Библиотека NgRx реализует принцип работы Redux для Angular приложений. Главная цель NgRx — централизовать и сделать максимально понятным управление всеми состояниями приложения.
Цель достигается благодаря заложенным в библиотеке нескольким фундаментальным принципам:
- Наличие единственного источника данных о состоянии — хранилища (
store
); - Доступность состояния только для чтения;
- Изменение состояние осуществляется только через действия (
actions
), которые обрабатываются редюсерами (reducer
), представляющими собой чистые функции.
Actions¶
Действия отражают уникальные события, которые происходят в Angular приложении, и используются для передачи данных в хранилище. NgRx Actions — единственный источник данных для хранилища.
Создание действий осуществляется с помощью интерфейса Action
, который имеет единственное обязательное строковое поле type
.
Reducers¶
Если действия описывают что-то, что произошло в приложении, то редюсеры определяют, как должно измениться состояние Angular приложения в ответ на возникшее действие.
NgRx Reducers
регистрируются в хранилище и должны быть чистыми функциями. Редюсер принимает исходное состояние и возникшее действие в качестве аргументов, но для применения изменений он должен вернуть новое состояние, но ни в коем случае не изменять напрямую исходное.
Если в редюсере не предусмотрена обработка возникшего действия, то он просто должен вернуть исходное состояние.
Store¶
Хранилище содержит в себе полное состояние всего приложения и существует в единственном экземпляре. Формирование NgRx Store
происходит путем объединения состояний, возвращаемых каждым из редюсеров (хотя самое простое Angular приложение может обойтись и одним редюсером).
Основные функции NgRx Store:
- хранение состояния приложения и предоставление к нему доступа;
- предоставление возможности обновить состояние с помощью метода
dispatch()
через заранее определенные действия; - регистрация функций с помощью
subscribe()
, которые будут вызваны при любом изменении состояния.