Redux
Библиотека управления состояниями на JavaScript.
Которая на 90% состоит из конвенции и на 10% из библиотеки.
У этого поста также есть видео версия, смотрите здесь:
Когда различные компоненты приложения должны обмениваться информацией туда-сюда, все очень быстро становится очень запутанным.
Философия Redux заключается в сохранении единого источника истины вместо того, чтобы каждый компонент управлял своим внутренним состоянием.
Это значительно упрощает процесс управления состоянием.
В основе Redux лежат 3 основных принципа:
Действие, Редуктор и Состояние.
Помните, я говорил, что Redux на 90% состоит из условностей. Это эти 3 концепции. Эти концепции не являются специфическими для Redux.
Существует поговорка, что «Redux не нуждается в Redux».
Чтобы понять, что это значит, давайте рассмотрим действия и редукторы.
Действие: Это объект с типом & полезная нагрузка в качестве ключа. Который диспетчеризируется.
Редуктор: Это чистая функция, которая возвращает новое состояние, основанное на типе и полезной нагрузке действия. Чистая функция является ключевым моментом здесь
.
Видите ли, в React есть хук под названием useReducer, поэтому с помощью комбинации useReducer и useContext вы можете добиться того же поведения, что и в Redux, не используя Redux.
Вот тут-то и приходит на помощь поговорка. (Redux не нуждается в Redux).
На самом деле вы можете реализовать собственную библиотеку Redux всего за 24 строки кода.
Вот полный поток Redux.
- Диспетчеризация действия.
- Редуктор возвращает новое состояние, основанное на типе действия и полезной нагрузке.
- Хранилище Redux обновляется, а приложение синхронизируется с помощью метода subscribe.
10%, которые являются фактической библиотекой, — это вспомогательные методы и методы оптимизации производительности, предоставляемые Redux.
Итак, это был Redux в двух словах.
Итак, на этом мы закончили. Если вам понравился этот пост, не забудьте выразить свою поддержку.
Увидимся в следующем посте.
Я также веду еженедельную рассылку, так что вы можете присоединиться ко мне и там: https://www.getrevue.co/profile/8020lessons.
Спасибо!