Приемущества Redux-toolkit
Набор популярных инструментов по работе с redux, По заверению авторов, разработка с ним, проще, чем с Redux
- Не нужно создавать много файлов
- Намного меньше кода
- Вместо привычных редюсеров и экшенов - слайсы
- Не нужно создавать actions type
- Встроенная работа с Thunks
- Встроенный Reselect (createSelector)
- Удобная работа с TypeScript
- Стор можно изменять, а не присылать целый объект как с Immer and Autodux
- Можно совмещать со старым подходом
Redux Toolkit включает в себя следующие API:
- configureStore(): обертка для createStore(), упрощающая настройку хранилища с настройками по умолчанию. Позволяет автоматически комбинировать отдельные частичные редукторы (slice reducers), добавлять промежуточные слои или посредников (middlewares), по умолчанию включает redux-thunk (преобразователя), позволяет использовать расширение Redux DevTools (инструменты разработчика Redux)
- createReducer(): позволяет использовать таблицу поиска (lookup table) операций для редукторов случая (case reducers) вместо инструкций switch. В данном API используется библиотека immer, позволяющая напрямую изменять иммутабельный код, например, так: state.todos[3].completed = true
- createAction(): генерирует создателя операции (action creator) для переданного типа операции. Функция имеет переопределенный метод toString(), что позволяет использовать ее вместо константы типа
- createSlice(): принимает объект, содержащий редуктор, название части состояния (state slice), начальное значение состояния, и автоматически генерирует частичный редуктор с соответствующими создателями и типами операции
- createAsyncThunk(): принимает тип операции и функцию, возвращающую промис, и генерирует thunk, отправляющий типы операции pending/fulfilled/rejected на основе промиса
- createEntityAdapter(): генерирует набор переиспользуемых редукторов и селекторов для управления нормализованными данными в хранилище утилита createSelector() из библиотеки Reselect
Полезные ссылки
- Официальный гайд на TypeScript - https://redux-toolkit.js.org/usage/usage-with-typescript
- Полный гайд и описание на русском - https://reactdev.ru/libs/redux-toolkit/