Ответ
useState и useReducer оба используются для управления состоянием в React, но у них есть ключевые различия:
-
Простота vs. Сложность
useStateидеален для простого состояния (примитивы, небольшие объекты).useReducerлучше подходит для сложного состояния (например, вложенные объекты, множественные действия).
-
Логика обновления
- В
useStateлогика обновления пишется прямо в компоненте. - В
useReducerлогика выносится в редьюсер, что упрощает тестирование и переиспользование.
- В
- Синтаксис
// useState
const [count, setCount] = useState(0);
setCount(prev => prev + 1);
// useReducer
const [state, dispatch] = useReducer(reducer, { count: 0 });
dispatch({ type: 'increment' });
Когда выбрать useReducer?
- Если следующее состояние зависит от предыдущего.
- Если есть много действий, изменяющих состояние.
- Для оптимизации производительности (редьюсеры могут избежать лишних ререндеров).