Вопрос проверяет понимание управления состоянием в приложениях, особенно в React.
Глобальные переменные – не вызывают перерендер, сложно отслеживать изменения.
Контекст (Context) – удобен для передачи данных без пропс-дриллинга.
State Manager (Redux, MobX) – предсказуемость, время-путешествие (debug), масштабируемость.
let user = null;
// Компонент A
user = { name: 'Alice' };
// Компонент B
console.log(user); // Иногда актуально, иногда нет Проблемы:
React не узнает об изменении переменной → нет перерендера.
Сложный контроль зависимостей.
Передает данные через дерево компонентов без явной передачи пропсов.
Пример:
const UserContext = createContext();
function App() {
const [user, setUser] = useState(null);
return (
<UserContext.Provider value={{ user, setUser }}>
<Header />
</UserContext.Provider>
);
}
function Header() {
const { user } = useContext(UserContext);
return <div>{user?.name}</div>;
} Плюсы:
Избегаем пропс-дриллинг (A → B → C → D).
Локальный стейт на уровне приложения.
Минусы:
Перерендер всех потребителей при изменении.
Пример Redux:
// Store
const store = configureStore({ reducer: userReducer });
// Компонент
const user = useSelector(state => state.user); Зачем?
Централизованное состояние – один источник правды.
Инструменты разработчика – логирование, откат действий.
Оптимизации – точечные подписки на изменения.
Вывод:
Для малых проектов хватит Context.
Для сложных – Redux/Zustand.
Глобальные переменные – только для статичных данных.