Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про 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 становится стандартом, так как оно помогает поддерживать порядок в коде и упростить работу с состоянием.

Уровень

  • Рейтинг:

    1

  • Сложность:

    4

Навыки

  • Redux

    Redux

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

#reducer

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