foundation

useState

Храните локальный state компонента, используйте функциональные обновления и понимайте batching и stale closures.

`useState` возвращает значение и функцию-сеттер. Начальный аргумент используется только при первом монтировании, если не передать функцию-инициализатор для дорогой подготовки. Сеттер принимает следующее значение или функцию-обновление.

В обработчиках событий React 18 объединяет обновления state, поэтому несколько сеттеров в одном handler дают один render. Замыкания в async-колбэках могут видеть устаревший state — помогают функциональные обновления или ref. Не вызывайте hooks условно.

					const [count, setCount] = useState(() => computeInitial());
function increment() {
  setCount((c) => c + 1);
}
				

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

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

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

Чеклист:

  • Функциональные обновления, если следующий state зависит от предыдущего.
  • Ленивая инициализация для дорогого первого значения.
  • Hooks вызываются в одном порядке на каждом render.