Установка
Install packages
yarn add @reduxjs/toolkit react-redux
- with yarnnpm install @reduxjs/toolkit react-redux
- with npm
Отличия от классического redux:
- Не нужны acttion types
- Не нужны acttion creators для синхронных (нужны только для асинхронных экшенов)
- Не нужен
redux-thunk
и middleware (уже идет "из коробки") - Не нужен
redux-devtools
(уже идет "из коробки") - Может менять (мутировать) стейт, в отличие от классического, где всегда возвращается новый стейт
Install template
npx create-next-app --example with-redux my-app
redux-persist
Пакет для сохранения стора в localStorage. Нужно дополнительно комфигурировать.
yarn add redux-persist
- установка redux-persistnpm install redux-persist
- установка redux-persist
State managment
Redux лучше понять на примере с банком.
- Банк (store/state) - хранилище данных (состояние приложение, которое можно изменять экшенами)
- Главный рьдьюсер (root reducer) - Всё банковское ПО (точка входа всех отдельных рьдьюсеров). Всегда возвращает store
- Рьдьюсеры (reducer) - Набор связянных по смыслу экшенов
- Actions (actions) - Функции банковского ПО, которые могут менять state
- Диспетчер (dispatch) - оператор Банковского ПО
В redux store иммутабильный (неизменяемый), при каких-либо изменениях в сторе будет возвращаться новый стор, старый будет удален.
Редукторы основаны на switch-case логике, где проверяется action type. По дефолту каждый редьюсер возвращает неизмененный state.