Проверяет понимание различий между локальным и глобальным состоянием в React и критериев выбора подхода.
В React состояние — это данные, которые влияют на отображение компонента. Локальное состояние хранится внутри конкретного компонента через useState или useReducer и доступно только ему и его дочерним элементам через props. Глобальное состояние — это данные, которые доступны всему приложению или большой его части, обычно через контекст или библиотеки типа Redux, Zustand, MobX.
Локальное состояние идеально для изолированных данных: значение поля ввода, открытость выпадающего списка, текущая вкладка. Оно не требует дополнительных библиотек, легко читается и тестируется. Если данные нужны только одному компоненту и его прямым детям, не выносите их наружу — это упрощает код и уменьшает количество перерендеров.
function SearchInput() {
const [query, setQuery] = useState('');
return <input value={query} onChange={e => setQuery(e.target.value)} />;
}Глобальный state оправдан, когда данные используются в нескольких несвязанных компонентах, например, авторизация, настройки темы, корзина покупок. Также он полезен, если данные часто обновляются из разных мест и нужно избежать «prop drilling» — передачи props через много уровней. Глобальный state упрощает синхронизацию, но добавляет сложность и может снизить производительность при частых обновлениях.
// Пример с Context
const UserContext = createContext(null);
function App() {
const [user, setUser] = useState(null);
return <UserContext.Provider value={{ user, setUser }}>
<Header />
<Profile />
</UserContext.Provider>;
}Начинайте с локального состояния и добавляйте глобальное только тогда, когда возникает реальная необходимость. Это сохранит код простым и производительным. Глобальный state — мощный инструмент, но его избыточное использование усложняет архитектуру и затрудняет тестирование.