Содержание статьи

React и Redux представляют собой связку, которая позволяет строить сложные пользовательские интерфейсы с предсказуемым управлением состоянием. Перед началом установки важно убедиться, что на компьютере установлены Node.js версии 18 или выше и пакетный менеджер npm 9+, что обеспечит совместимость с последними версиями библиотек.
Создание нового проекта React рекомендуется выполнять через Create React App, так как он автоматически настраивает структуру папок, сборку и подключение всех необходимых зависимостей. После создания проекта можно перейти к установке Redux и Redux Toolkit с помощью команды npm install @reduxjs/toolkit react-redux, что позволит использовать упрощённые методы для создания редьюсеров и слайсов состояния.
После установки ключевым шагом является интеграция Redux в React-приложение через компонент Provider. Он обеспечивает доступ компонентов к хранилищу Redux и позволяет управлять состоянием централизованно. Создание слайсов и редьюсеров следует выполнять с учётом структуры приложения, разделяя логику по функциональным блокам, чтобы минимизировать зависимость между компонентами и упростить тестирование.
Проверка корректности работы Redux включает добавление базовых действий и использование хука useSelector для получения данных из состояния. Такой подход позволяет сразу убедиться, что данные обновляются и передаются между компонентами без ошибок. Важно соблюдать последовательность подключения и тестирования каждого элемента, чтобы избежать проблем с синхронизацией стейта и ререндером компонентов.
Проверка и подготовка среды для React
Перед созданием проекта React необходимо проверить установленную версию Node.js. Для этого выполните команду node -v в терминале; проект корректно работает с версиями 18 и выше. Также убедитесь, что npm обновлён до версии 9+, используя npm -v, так как более старые версии могут вызвать ошибки при установке зависимостей.
Рекомендуется настроить глобальный кэш npm и удалить устаревшие пакеты с помощью команд npm cache clean —force и npm outdated -g, чтобы избежать конфликтов при создании проекта. Проверка доступа к интернет-репозиториям npm важна для успешной загрузки библиотек, особенно при работе за прокси или корпоративными сетями.
Для управления версиями Node.js удобно использовать nvm (Node Version Manager). Установка nvm позволяет быстро переключаться между версиями Node.js под разные проекты. После установки nvm выполните nvm install 18 и nvm use 18, чтобы задать требуемую версию для текущего проекта.
Перед переходом к созданию проекта убедитесь, что терминал поддерживает выполнение скриптов npm. На Windows может потребоваться запуск терминала от имени администратора и проверка переменных окружения PATH, чтобы команды node и npm были доступны глобально.
Установка React через Create React App

Создание нового проекта React рекомендуется выполнять через Create React App, который автоматически настраивает структуру папок, сборку и подключение необходимых зависимостей. Для установки используйте команду npx create-react-app my-app, где my-app – имя вашего проекта. Этот метод гарантирует совместимость с последними версиями React и инструментов сборки.
После завершения установки перейдите в папку проекта командой cd my-app и запустите локальный сервер с помощью npm start. По умолчанию приложение открывается на http://localhost:3000, что позволяет проверить корректность установки и работу базового шаблона.
Рекомендуется сразу обновить все зависимости проекта до последних стабильных версий с помощью npm update. Это предотвращает ошибки при добавлении дополнительных библиотек, включая Redux и React Router. Также стоит проверить наличие файла package.json и убедиться, что версии react и react-dom соответствуют документации React 18+.
Для ускорения разработки можно подключить расширения React Developer Tools в браузере. Они позволяют отслеживать состояние компонентов и взаимодействие с виртуальным DOM, что пригодится при последующей интеграции Redux и настройке хранилища.
Добавление Redux в проект React
Для интеграции Redux в существующий проект React используйте пакет react-redux и @reduxjs/toolkit. Установка выполняется командой npm install @reduxjs/toolkit react-redux. Redux Toolkit упрощает создание редьюсеров и слайсов состояния, снижая вероятность ошибок в ручной конфигурации хранилища.
После установки создайте папку store в корне проекта и добавьте файл store.js. В этом файле подключите функцию configureStore из Redux Toolkit для объединения редьюсеров и настройки начального состояния. Такой подход обеспечивает модульность и упрощает добавление новых функций в будущем.
Рекомендуется проверять корректность импорта пакетов через команду npm list @reduxjs/toolkit react-redux. Это гарантирует, что зависимости установлены в актуальной версии и будут работать с React 18+. Любые ошибки при импорте нужно устранять до подключения Provider к корневому компоненту, чтобы избежать проблем с доступом к состоянию в компонентах.
После настройки хранилища создайте тестовый редьюсер и проверьте его работу через подключение к компоненту с помощью хука useSelector для чтения состояния и useDispatch для отправки действий. Это позволит убедиться, что Redux корректно интегрирован и готов к использованию.
Настройка Redux Toolkit для управления состоянием

Redux Toolkit упрощает создание хранилища и управление состоянием в React-приложении. Для начала создайте папку store и файл store.js. Подключите в него функцию configureStore из Redux Toolkit:
- Импортируйте configureStore и редьюсеры слайсов.
- Создайте объект хранилища, передав редьюсеры в свойство reducer.
- Экспортируйте созданное хранилище для использования в корневом компоненте через Provider.
Для управления отдельными частями состояния создайте слайсы с помощью createSlice:
- Определите имя слайса через свойство name.
- Задайте начальное состояние через initialState.
- Опишите действия и редьюсеры через объект reducers.
- Экспортируйте созданные действия и редьюсер для подключения к хранилищу.
Рекомендуется придерживаться модульной структуры, создавая отдельные слайсы для разных частей приложения, чтобы минимизировать зависимость компонентов и упростить тестирование. После подключения слайсов через configureStore можно проверять обновления состояния с помощью хуков useSelector и useDispatch в компонентах React.
Создание первого слайса и редьюсера
Первый слайс состояния создается с помощью функции createSlice из Redux Toolkit. Он объединяет редьюсер и действия в одном модуле, упрощая структуру приложения.
- Создайте файл counterSlice.js в папке store.
- Импортируйте createSlice из @reduxjs/toolkit.
- Определите начальное состояние, например:
- value: 0
- Создайте слайс, указав name, initialState и reducers. Пример действий:
- increment – увеличивает значение на 1
- decrement – уменьшает значение на 1
- incrementByAmount – увеличивает значение на заданное число
- Экспортируйте редьюсер и действия для подключения к хранилищу:
- export const { increment, decrement, incrementByAmount } = counterSlice.actions;
- export default counterSlice.reducer;
После создания слайса подключите его к хранилищу через configureStore и проверьте работу действий в компонентах с использованием хуков useDispatch и useSelector.
Подключение Redux к компонентам React через Provider

Для интеграции Redux в React-приложение используется компонент Provider из пакета react-redux. Он обеспечивает доступ к хранилищу Redux всем дочерним компонентам через контекст.
Сначала создайте файл store.js и настройте хранилище:
import { configureStore } from '@reduxjs/toolkit';
import rootReducer from './reducers';
const store = configureStore({ reducer: rootReducer });
export default store;
Далее в основном файле приложения (index.js или App.js) импортируйте Provider и хранилище:
import { Provider } from 'react-redux';
import store from './store';
Обрамите корневой компонент <App /> в Provider, передав хранилище через проп store:
ReactDOM.render(<Provider store={store}><App /></Provider>, document.getElementById('root'));
После этого любые компоненты внутри <App /> смогут подключаться к Redux-хранилищу с помощью хуков useSelector для чтения состояния и useDispatch для отправки действий.
Пример подключения компонента к Redux:
import { useSelector, useDispatch } from 'react-redux';
const Counter = () => {
const count = useSelector(state => state.counter.value);
const dispatch = useDispatch();
return (<div><button onClick={() => dispatch({ type: 'counter/increment' })}>+</button>{count}</div>);
};
Рекомендуется использовать единый Provider на уровне всего приложения, чтобы избежать множественных контекстов и дублирования хранилища.
| Шаг | Действие |
|---|---|
| 1 | Создать Redux-хранилище в отдельном файле |
| 2 | Импортировать Provider из react-redux |
| 3 | Обрамить корневой компонент <App /> в Provider |
| 4 | Использовать useSelector и useDispatch в дочерних компонентах |
Проверка работы Redux и базовые операции со стейтом

После подключения Redux через Provider важно убедиться, что хранилище функционирует корректно и состояние изменяется ожидаемо.
Создайте простой редьюсер в файле counterSlice.js с начальными данными и действиями:
import { createSlice } from '@reduxjs/toolkit';
const counterSlice = createSlice({
name: 'counter',
initialState: { value: 0 },
reducers: {
increment: state => { state.value += 1; },
decrement: state => { state.value -= 1; },
reset: state => { state.value = 0; }
}
});
export const { increment, decrement, reset } = counterSlice.actions;
export default counterSlice.reducer;
Подключите редьюсер к store.js:
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';
const store = configureStore({ reducer: { counter: counterReducer } });
export default store;
Для проверки создайте компонент Counter:
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement, reset } from './counterSlice';
const Counter = () => {
const count = useSelector(state => state.counter.value);
const dispatch = useDispatch();
return (
<div>
<strong>Счетчик:</strong> {count}
<button onClick={() => dispatch(increment())}>+</button>
<button onClick={() => dispatch(decrement())}>-</button>
<button onClick={() => dispatch(reset())}>Сброс</button>
</div>
);
};
Базовые операции включают:
- Чтение состояния: через
useSelector(state => state.counter.value) - Изменение состояния: через
dispatch(action) - Сброс состояния: вызов
dispatch(reset())возвращает начальное значение
Для тестирования работы Redux откройте консоль браузера и выполните store.getState() в DevTools. Состояние должно соответствовать последним действиям, отправленным через dispatch. Регулярная проверка предотвращает ошибки в сложных приложениях.
Вопрос-ответ:
Что такое Redux и зачем он нужен в React-приложении?
Redux — это библиотека для управления состоянием приложения. Она позволяет хранить все данные в едином объекте, что упрощает обмен данными между компонентами. В React это особенно полезно, когда состояние нужно использовать в нескольких местах и требуется предсказуемое обновление данных.
Как установить Redux и React-Redux в проект?
Для установки используйте npm или yarn. В терминале выполните команду npm install @reduxjs/toolkit react-redux или yarn add @reduxjs/toolkit react-redux. Пакет @reduxjs/toolkit содержит инструменты для быстрого создания хранилища и редьюсеров, а react-redux обеспечивает интеграцию с React.
Как подключить Redux к React-компонентам?
Подключение выполняется через компонент Provider из react-redux. Он оборачивает корневой компонент приложения и получает хранилище через проп store. После этого дочерние компоненты могут использовать хуки useSelector для чтения состояния и useDispatch для отправки действий.
Как проверить работу Redux после подключения?
Создайте простой редьюсер с несколькими действиями, например, увеличение, уменьшение и сброс счетчика. Используйте компонент с кнопками, вызывающими dispatch. При нажатии кнопок значение состояния должно изменяться. Для дополнительной проверки можно открыть консоль и вызвать store.getState(), чтобы убедиться, что состояние соответствует последним действиям.
В чем разница между useSelector и useDispatch?
useSelector позволяет получить текущее состояние из хранилища Redux, выбирая нужные поля. useDispatch возвращает функцию, с помощью которой отправляются действия для изменения состояния. Вместе они обеспечивают полное взаимодействие компонента с Redux-хранилищем.
Как правильно настроить хранилище Redux в React-приложении?
Для настройки хранилища создайте отдельный файл, например store.js, и используйте configureStore из @reduxjs/toolkit. В качестве редьюсеров укажите объекты с соответствующими функциями обработки действий. После этого в основном файле приложения импортируйте Provider из react-redux и оберните им корневой компонент, передав хранилище через проп store. Дочерние компоненты смогут использовать useSelector для чтения состояния и useDispatch для изменения. Проверку работы можно выполнить с помощью простого счетчика: создайте действия для увеличения, уменьшения и сброса значения, добавьте кнопки для их вызова и убедитесь, что отображаемое значение обновляется при нажатии.
