Как установить Redux для разработки: Полное руководство по настройке современного стейт-менеджмента

Пошаговое руководство по установке и настройке Redux Toolkit (RTK) и React Redux в React или React Native приложении. Описывается создание хранилища, слайсов, подключение провайдера и использование хуков для управления состоянием.
Redux остается одним из самых популярных и надежных инструментов для управления состоянием в больших React- и React Native-приложениях. Однако его начальная настройка может показаться сложной. Это пошаговое руководство проведет вас через процесс установки и базовой настройки современного Redux с использованием рекомендованного инструментария — Redux Toolkit (RTK), который значительно упрощает код и повышает продуктивность.

Прежде всего, убедитесь, что у вас есть работающий проект React или React Native. Для React создайте приложение с помощью Create React App: `npx create-react-app my-app --template redux`. Этот шаблон уже включает предварительно настроенный Redux Toolkit, что является отличным стартом. Для React Native инициализируйте проект через `npx react-native init MyApp`. Для существующих проектов мы будем устанавливать зависимости вручную.

Откройте терминал в корневой директории вашего проекта. Установите необходимые пакеты. Для React-приложения выполните: `npm install @reduxjs/toolkit react-redux`. Для React Native команда будет идентичной. Пакет `@reduxjs/toolkit` (RTK) — это официальный, рекомендуемый подход к написанию логики Redux. Он включает утилиты для настройки хранилища, создания редюсеров и действий, выполнения асинхронной логики и многое другое. Пакет `react-redux` предоставляет React-компоненты и хуки, которые позволяют вашим React-компонентам взаимодействовать с хранилищем Redux.

Теперь создадим структуру папок. Хотя это вопрос предпочтений, рекомендуется структура, ориентированная на функции (feature-based). В папке `src` создайте директорию `app` и `features`. В `app` будет храниться конфигурация хранилища, а в `features` — логика, связанная с конкретными доменами приложения (например, "пользователи", "посты").

Первым делом настроим само хранилище (store). В `src/app` создайте файл `store.js`. Импортируйте `configureStore` из RTK. Эта функция абстрагирует сложную настройку, по умолчанию включая поддержку Redux DevTools и middleware. Создайте и экспортируйте хранилище.

```
import { configureStore } from '@reduxjs/toolkit';
// Импорт редюсеров будет позже
export const store = configureStore({
 reducer: {
 // Здесь будут добавлены редюсеры из слайсов
 },
});
```

Теперь создадим наш первый "слайс" (slice). Слайс — это концепция RTK, которая объединяет логику редюсера и действий для определенной функциональности. В папке `src/features` создайте подпапку, например, `counter` (для демо) или `users`. Внутри создайте файл `counterSlice.js`. Импортируйте `createSlice` и `createAsyncThunk` (если нужна асинхронная логика).

```
import { createSlice } from '@reduxjs/toolkit';

const initialState = {
 value: 0,
};

export const counterSlice = createSlice({
 name: 'counter',
 initialState,
 reducers: {
 increment: (state) => {
 state.value += 1;
 },
 decrement: (state) => {
 state.value -= 1;
 },
 incrementByAmount: (state, action) => {
 state.value += action.payload;
 },
 },
});

// Экспортируем сгенерированные actions
export const { increment, decrement, incrementByAmount } = counterSlice.actions;
// Экспортируем редюсер
export default counterSlice.reducer;
```

Обратите внимание: в редюсерах RTK позволяет писать "мутирующую" логику благодаря библиотеке Immer, которая работает "под капотом". Это делает код намного чище.

Вернитесь в `store.js` и импортируйте редюсер из слайса, добавьте его в объект редюсеров.

```
import counterReducer from '../features/counter/counterSlice';
export const store = configureStore({
 reducer: {
 counter: counterReducer,
 },
});
```

Следующий критический шаг — предоставление доступа к хранилищу для всего React-приложения. В корневом файле приложения (обычно `src/index.js` для React или `App.js` для React Native) импортируйте `Provider` из `react-redux` и созданное хранилище. Оберните ваш корневой компонент в `Provider`, передав store как проп.

```
import React from 'react';
import { Provider } from 'react-redux';
import { store } from './app/store';
import App from './App';

function Root() {
 return (



 );
}
// Для React Native экспортируйте Root
```

Теперь ваше хранилище подключено. Пришло время использовать состояние и действия в компонентах. Вместо устаревшего `connect`, используйте хуки `useSelector` и `useDispatch` из `react-redux`. Создайте простой компонент `Counter.js`.

```
import React from 'react';
import { View, Text, Button } from 'react-native'; // Или div, button для React
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement } from '../features/counter/counterSlice';

export function Counter() {
 const count = useSelector((state) => state.counter.value);
 const dispatch = useDispatch();

 return (

 Count: {count}
 dispatch(increment())} />
 dispatch(decrement())} />

 );
}
```

Хук `useSelector` извлекает нужную часть состояния, а `useDispatch` возвращает функцию для отправки действий. При нажатии кнопки действие отправляется, редюсер обновляет состояние, и компонент автоматически перерисовывается с новым значением.

Для работы с асинхронными операциями (запросы к API) используйте `createAsyncThunk`. Внутри слайса определите thunk, который будет выполнять асинхронную логику, а затем обработайте его жизненный цикл (pending, fulfilled, rejected) в `extraReducers`. Это стандартный и эффективный подход для загрузки данных.

Наконец, установите расширение Redux DevTools для браузера (Chrome или Firefox). Благодаря настройкам `configureStore`, оно будет работать автоматически. Вы сможете инспектировать состояние, отслеживать действия и даже "путешествовать во времени" для отладки — это незаменимый инструмент для разработки.

Следуя этим шагам, вы установите и настроите современный Redux (Redux Toolkit) в своем проекте. Этот подход минимизирует шаблонный код, обеспечивает лучшие практики из коробки и создает отличную основу для роста вашего приложения.
231 4

Комментарии (9)

avatar
qhjgf4eahud 22.03.2026
Наконец-то понятное объяснение!
avatar
01q0k8bnfca 03.04.2026
Отличное руководство! Как раз искал актуальный способ настройки Redux Toolkit для нового проекта. Спасибо за четкие шаги.
avatar
avuhryqg 03.04.2026
Статья хорошая, но не хватает сравнения с другими стейт-менеджерами, например, MobX или Context API. Когда выбирать именно Redux?
avatar
jj0h7cvw 03.04.2026
Для маленьких проектов Redux — это overkill. Начинающие часто усложняют архитектуру без реальной необходимости.
avatar
lad6kxo 04.04.2026
Всё ещё использую старый подход с connect(). RTK, конечно, выглядит лаконичнее, но нужно время, чтобы перестроиться.
avatar
qhjgf4eahud 05.04.2026
Поделился с коллегами, всем понравилось.
avatar
qhjgf4eahud 05.04.2026
Поделился с коллегами, всем понравилось.
avatar
3pwama04b 05.04.2026
Спасибо за упоминание React Native! Часто гайды фокусируются только на вебе, а тут универсальное руководство.
avatar
qhjgf4eahud 11.04.2026
Очень подробно и понятно даже новичку.
Вы просмотрели все комментарии