Средняя сложность
react
Правильный ответ
Состояние (state) — это объект, который хранит данные о компоненте и может изменяться с течением времени. Изменение состояния вызывает повторный рендеринг компонента.
Состояние (state) в React — это встроенный механизм для хранения и управления изменяемыми данными внутри компонента. В отличие от пропсов (props), которые передаются извне и являются неизменяемыми, состояние полностью контролируется самим компонентом.
Когда состояние изменяется, React автоматически перерисовывает компонент (и его дочерние элементы, если необходимо), чтобы отразить новые данные. Это делает state ключевым инструментом для создания интерактивных пользовательских интерфейсов.
Состояние принадлежит конкретному компоненту и не доступно напрямую извне (если не передаётся через props).
В отличие от props, state можно изменять с помощью специального метода setState
(в классовых компонентах) или функции-сеттера (в функциональных компонентах с хуками).
Обновление состояния может происходить не мгновенно. React может группировать несколько вызовов setState
для оптимизации производительности.
Состояние обычно инициализируется при создании компонента:
В классовых компонентах — в конструкторе.
В функциональных компонентах — через useState
.
С появлением React Hooks (16.8+) функциональные компоненты получили возможность использовать состояние.
import React, { useState } from 'react';
//
function Counter() {
const [count, setCount] = useState(0);
const increment = () => { setCount(count + 1); };
return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>Увеличить</button>
</div>
);
}
Используется хук useState
.
useState
возвращает массив: текущее значение и функцию-сеттер.
Можно использовать несколько useState
для разных данных.
❌ Неправильно:
state = 10; // Не вызовет ререндер
✅ Правильно:
setCount(10);
Если новое состояние зависит от предыдущего, используйте функцию setCount
.
setCount((prevCount) => prevCount + 1);
Если несколько компонентов должны работать с одними данными, состояние выносится в ближайшего общего родителя.
function ParentComponent() {
const [sharedValue, setSharedValue] = useState('');
return (
<>
<ChildA value={sharedValue} onChange={setSharedValue} />
<ChildB value={sharedValue} />
</>
);
}
Для сложных приложений с множеством компонентов локального состояния может быть недостаточно. В таких случаях используют:
Context API (встроен в React).
Zustand, Redux, MobX (сторонние решения).
Состояние — это мощный механизм React для управления динамическими данными. Оно позволяет:
Создавать интерактивные интерфейсы.
Контролировать данные внутри компонента.
Автоматически обновлять UI при изменениях.
Используйте его правильно, избегая прямых изменений и вынося общее состояние вверх по иерархии компонентов. Для больших приложений рассмотрите глобальные решения, такие как Context API или Zustand, Redux.