PassFront
  1. PassFront
  2. База знаний
  3. Состояние

Что такое 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 — внутренний.

Другие вопросы раздела