Что такое `useReducer` и чем он отличается от `useState`?
- Хук для управления сложным состоянием через редьюсер
- useState — императивное обновление, useReducer — декларативное через dispatch(action)
- Редьюсер: чистая функция (state, action) => newState
- Возвращает [state, dispatch]
- Поддерживает ленивую инициализацию через init(initialArg)