Что такое state в React?
Состояние
State — это внутренние данные компонента, которые могут меняться во времени и определяют, что компонент отображает. Изменение state вызывает перерендер.
State против props
- props — данные приходят снаружи, компонент их не меняет (read-only).
- state — данные принадлежат компоненту, он сам их создаёт и обновляет.
Одно и то же значение может быть state одного компонента и props его детей.
Как объявить
const SearchBox = () => {
const [query, setQuery] = useState('');
return (
<input
value={query}
onChange={(e) => setQuery(e.target.value)}
/>
);
};В классах — this.state и this.setState().
Свойства state
- Асинхронность и батчинг: несколько set-вызовов в одном обработчике дают один перерендер; значение в текущем замыкании не меняется мгновенно.
- Иммутабельность: объекты/массивы не мутируют, а копируют (
{ ...user, name }), иначе React не увидит изменения. - Изоляция: state приватен для экземпляра компонента; два экземпляра — два независимых состояния.
- Сохранение по позиции: React привязывает state к позиции компонента в дереве; смена key или типа компонента сбрасывает состояние.
Что держать в state
Только то, что меняется и влияет на рендер. Производные данные (отфильтрованный список, сумма) — вычислять из имеющегося state, а не дублировать; данные, не влияющие на UI, — в useRef.
Коротко для собеседования
State — изменяемые данные компонента, управляющие его отображением; их обновление через setState/useState-сеттер планирует перерендер. Обновления батчатся, объекты обновляются иммутабельно, состояние приватно и привязано к позиции в дереве. Props — снаружи и read-only, state — внутренний.