intermediate

useReducer

Централизуйте сложные переходы state через события, reducers и явную инициализацию.

`useReducer` связывает state с функцией dispatch и чистым reducer `(state, action) => nextState`. Полезен, когда много типов событий меняют связанные поля, следующий state сложно зависит от предыдущего или нужна тестируемая таблица переходов.

Третий аргумент задаёт ленивую инициализацию. Context плюс `useReducer` может заменить prop drilling в средних локальных доменах. Это не автоматически быстрее `useState` — выигрыш в ясности событий.

					function reducer(state, action) {
  switch (action.type) {
    case "inc": return { count: state.count + 1 };
    default: return state;
  }
}
				

На интервью объясняйте концепцию на конкретном примере и называйте поведение, которое проверяют.

Типовые ошибки: скрывать поток данных, дробить компоненты чрезмерно и выполнять побочные эффекты в render.

Компромисс часто между ясностью и переиспользованием или между явными props и удобством.

Чеклист:

  • Моделируйте действия как явные события.
  • Держите reducer чистым и синхронным.
  • Размещайте reducer рядом с владельцем компонента или hook.