Коротко

useState — это React Hook, который даёт функциональному компоненту локальное состояние: значение и функцию, чтобы его менять. После обновления состояния React перерисовывает компонент.

const [count, setCount] = useState(0);

Зачем спрашивают

Хотят понять, умеешь ли ты работать с реактивным UI, а не только «рисовать разметку». Это базовый хук — без него дальше (эффекты, формы, списки) обычно разговор короткий.

Как работает

  1. При первом рендере useState(initial) сохраняет начальное значение.
  2. setCount(newValue) ставит обновление в очередь.
  3. React делает новый рендер с актуальным count.

Важно: нельзя мутировать старое значение «на месте». Для объектов и массивов создавай копию:

setUser(prev => ({ ...prev, name: "Анна" }));

Функциональная форма setState(prev => ...) нужна, когда новое значение зависит от предыдущего — так меньше гонок при быстрых кликах.

Типичные ошибки

  • Вызывать хуки условно (if (...) useState() — нельзя).
  • Класть в state огромные вычисляемые данные, которые можно посчитать из props.
  • Думать, что setState меняет значение синхронно в следующей строке — нет, обновление асинхронное относительно текущего рендера.

Как ответить на собесе за 30 секунд

«useState хранит локальный state компонента. Возвращает пару: значение и setter. После setter React ре-рендерит. Для зависимого обновления использую функциональный setter, объекты не мутирую.»