Что такое useReducer?
Массивы и структуры данных
`useReducer` — это хук React для управления состоянием через редьюсер, когда логика обновления сложна или следующее состояние зависит от предыдущего. Альтернатива useState.
Синтаксис
const [state, dispatch] = useReducer(reducer, initialState);reducer(state, action)— чистая функция, возвращающая новое состояние.dispatch(action)— отправляет действие.
Пример
function reducer(state, action) {
switch (action.type) {
case 'increment': return { count: state.count + 1 };
case 'reset': return { count: 0 };
default: return state;
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, { count: 0 });
return (
<button onClick={() => dispatch({ type: 'increment' })}>
{state.count}
</button>
);
}useReducer против useState
- useState — простое независимое состояние.
- useReducer — сложное состояние с несколькими под-значениями, много типов обновлений, переходы зависят от предыдущего состояния.
Преимущества
- Логика обновлений собрана в одном чистом редьюсере (тестируемо).
- Предсказуемые переходы состояния.
dispatchстабилен между рендерами — удобно прокидывать глубоко.
Коротко для собеседования
useReducer управляет состоянием через чистый reducer и dispatch(action), как локальный Redux. Выбирают его вместо useState, когда состояние сложное, обновлений много и переходы зависят от предыдущего состояния.