> В чем разница useReducer и useState в React (React)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: IT-One, Софт Медиа Групп, EPAM

Стек: React

> Пример ответа

useState и useReducer - это хуки React для управления состоянием компонента. Основное различие - в сложности логики обновления.

useState - простой хук для хранения одного значения (числа, строки, объекта). Обновление происходит напрямую: setState(newValue) или через функцию setState(prev => prev + 1). Идеален для простых состояний, где изменения не зависят от предыдущих сложных преобразований.

useReducer - более мощный инструмент, вдохновленный Redux. Принимает редюсер (функцию (state, action) => newState) и начальное состояние. Обновление происходит через диспатч действия: dispatch({ type: 'INCREMENT' }). Подходит для:

  • Сложной логики обновления (несколько подсостояний, зависящих друг от друга).

  • Состояний, где следующее значение зависит от предыдущего в нетривиальном виде.

  • Сценариев, где нужно централизовать обработку действий (например, формы с множеством полей).

Пример сравнения:

JSX
// useState
const [count, setCount] = useState(0);
setCount(count + 1);
// useReducer
const reducer = (state, action) => {
switch (action.type) {
case 'increment': return state + 1;
default: return state;
}
};
const [count, dispatch] = useReducer(reducer, 0);
dispatch({ type: 'increment' });

Когда что выбирать:

  • Используйте useState для изолированных, простых значений (переключатели, счетчики, текст инпута).

  • Используйте useReducer, если состояние - сложный объект, обновления требуют нескольких шагов или логика повторяется в разных частях компонента.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью