Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →
Что такое Redux Toolkit?
Redux Toolkit — это наш официальный, готовый к использованию инструментарий для эффективной разработки на Redux. Он предназначен стать стандартным способом написания Redux-логики, и мы настоятельно рекомендуем его использовать.
Он содержит набор утилит, упрощающих наиболее распространённые сценарии работы с Redux: настройку хранилища, определение редюсеров, иммутабельные обновления состояния и даже создание целых "срезов" состояния (slices) без ручного написания создателей действий (action creators) или типов действий. Также в него включены популярные Redux-расширения, такие как Redux Thunk для асинхронной логики и Reselect для селекторов, что позволяет использовать их сразу из коробки.
Установка
Redux Toolkit доступен как пакет на NPM для использования со сборщиком модулей или в Node-приложении:
# NPM
npm install @reduxjs/toolkit
# Yarn
yarn add @reduxjs/toolkit
Цель создания
Базовая библиотека Redux намеренно не навязывает определённых подходов. Она позволяет вам самостоятельно решать, как настраивать хранилище, определять структуру состояния и писать редюсеры.
В некоторых случаях это хорошо, поскольку даёт гибкость, но такая гибкость не всегда нужна. Иногда мы просто хотим максимально простой способ начать работу с готовыми настройками по умолчанию. Или, возможно, вы разрабатываете большое приложение и замечаете, что пишете много похожего кода, и хотели бы сократить объём ручной работы.
Redux Toolkit изначально создавался для решения трёх распространённых проблем Redux:
-
"Настройка Redux-хранилища слишком сложна"
-
"Требуется много дополнительных пакетов для полезной работы с Redux"
-
"Redux требует слишком много шаблонного кода"
Мы не можем охватить все случаи, но в духе create-react-app и apollo-boost мы предлагаем официальный набор инструментов, решающих наиболее частые задачи и сокращающих необходимость принимать лишние решения.
Почему стоит использовать Redux Toolkit
Redux Toolkit упрощает создание качественных Redux-приложений и ускоряет разработку, внедряя рекомендованные практики, предоставляя оптимальные настройки по умолчанию, выявляя ошибки и позволяя писать более простой код. Redux Toolkit полезен всем пользователям Redux независимо от уровня подготовки. Его можно подключить в начале нового проекта или использовать при постепенной миграции существующего приложения.
Обратите внимание: использование Redux Toolkit не является обязательным для работы с Redux. Существует множество приложений, использующих другие библиотеки-обёртки или полностью ручное написание логики, и если вы предпочитаете иной подход — это допустимо!
Однако мы настоятельно рекомендуем использовать Redux Toolkit для всех Redux-приложений.
В итоге, независимо от того, новичок вы, настраивающий свой первый проект, или опытный разработчик, желающий упростить существующее приложение, использование Redux Toolkit сделает ваш код лучше и удобнее в поддержке.
Что входит в комплект
Redux Toolkit включает:
-
configureStore(): обёртка надcreateStoreс упрощённой конфигурацией и оптимальными настройками по умолчанию. Автоматически комбинирует редюсеры срезов, добавляет указанные middleware, включаетredux-thunkпо умолчанию и активирует Redux DevTools Extension. -
createReducer(): позволяет передавать таблицу соответствия типов действий функциям-редьюсерам вместо написания операторов switch. Кроме того, автоматически использует библиотекуimmerдля записи простых иммутабельных обновлений через мутабельный синтаксис, напримерstate.todos[3].completed = true. -
createAction(): генерирует функцию-создатель действия для указанной строки типа действия. Сама функция имеет определенный методtoString(), что позволяет использовать её вместо константы типа. -
createSlice(): принимает объект функций-редьюсеров, имя слайса и начальное состояние, затем автоматически генерирует редьюсер слайса с соответствующими создателями действий и типами действий. -
createAsyncThunk: принимает строку типа действия и функцию, возвращающую промис, затем генерирует санк, который диспатчит типы действийpending/fulfilled/rejectedна основе этого промиса. -
createEntityAdapter: генерирует набор переиспользуемых редьюсеров и селекторов для управления нормализованными данными в хранилище. -
Утилита
createSelectorиз библиотеки Reselect, реэкспортированная для удобства использования.
Redux Toolkit также включает API для загрузки данных RTK Query. RTK Query — мощный инструмент для загрузки и кэширования данных, созданный специально для Redux. Он разработан для упрощения типичных сценариев загрузки данных в веб-приложениях, избавляя от необходимости самостоятельно писать логику получения данных и кэширования.
Документация
Полная документация по Redux Toolkit доступна на https://redux-toolkit.js.org.