Перейти к содержанию

О библиотеке

Библиотека 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(), которые будут вызваны при любом изменении состояния.