> В чем разница 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// useStateconst [count, setCount] = useState(0);setCount(count + 1);// useReducerconst 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, если состояние - сложный объект, обновления требуют нескольких шагов или логика повторяется в разных частях компонента.
> Похожие задачи по frontend
Что происходит при клике на кнопку, вызывающую изменение состояния в React?
Почему нельзя использовать индекс массива как ключ в React
Где хранить состояние в React
Что такое JSX в React и зачем он нужен
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью