Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Redux: reducer

Как использовать combineReducers и зачем это нужно?

Этот вопрос проверяет понимание организации состояния в Redux.

Короткий ответ

combineReducers — это функция Redux, которая объединяет несколько редьюсеров в один. Это удобно, когда состояние приложения разделено на логические части (например, пользователи, задачи, фильтры). Каждый редьюсер управляет своей частью состояния, а combineReducers объединяет их в единую структуру.

Длинный ответ

Когда приложение становится сложным, разделение состояния на отдельные части (или срезы) помогает организовать код. Каждый срез может управляться своим редьюсером. Функция combineReducers позволяет объединить эти редьюсеры в единый корневой редьюсер, который передается в хранилище Redux.

 

Пример использования:

 

Отдельные редьюсеры для каждого среза состояния:

const todosReducer = (state = [], action) => {
  switch (action.type) {
    case 'ADD_TODO':
      return [...state, action.payload];
    case 'REMOVE_TODO':
      return state.filter((todo) => todo.id !== action.payload);
    default:
      return state;
  }
};

const filterReducer = (state = 'all', action) => {
  switch (action.type) {
    case 'SET_FILTER':
      return action.payload;
    default:
      return state;
  }
};

Объединение редьюсеров:

import { combineReducers } from 'redux';

const rootReducer = combineReducers({
  todos: todosReducer,
  filter: filterReducer,
});

export default rootReducer;

Создание хранилища:

import { createStore } from 'redux';
import rootReducer from './reducers';

const store = createStore(rootReducer);

Пример состояния: После использования combineReducers, состояние будет выглядеть так:

{
  todos: [{ id: 1, text: 'Learn Redux' }],
  filter: 'all',
}

Доступ к данным: Компоненты могут извлекать данные из соответствующих частей состояния:

const todos = store.getState().todos;
const filter = store.getState().filter;

 

Зачем использовать combineReducers?

- Упрощение структуры: Разделение логики на отдельные редьюсеры делает код более читаемым и поддерживаемым.

- Масштабируемость: Легче добавлять новые редьюсеры, когда приложение растет.

- Гибкость: Позволяет каждому редьюсеру фокусироваться только на своей части состояния.

 

В больших приложениях использование combineReducers становится стандартом, так как оно помогает поддерживать порядок в коде и упростить работу с состоянием.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    1

  • Сложность:

    4

Навыки

  • Redux

    Redux

Ключевые слова

#reducer

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию