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.