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.