Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: useContext, React, context, props drilling, state management

Для чего нужен useContext? Какую проблему он решает?

Вопрос проверяет понимание хука useContext в React и его роли в управлении глобальным состоянием без пропс-дриллинга.

Короткий ответ

useContext — это хук React, который позволяет компонентам получать доступ к данным из контекста без передачи пропсов через всю цепочку. Он решает проблему пропс-дриллинга, когда данные нужно передавать через много уровней вложенных компонентов. Вместо этого вы создаете контекст с помощью createContext, оборачиваете компоненты в Provider и используете useContext для чтения значения.

Длинный ответ

Что такое useContext и зачем он нужен?

useContext — это хук в React, который позволяет компоненту подписаться на контекст и получать его текущее значение. Контекст — это механизм для передачи данных через дерево компонентов без необходимости передавать пропсы на каждом уровне. Основная проблема, которую решает useContext, — это пропс-дриллинг (props drilling), когда данные передаются через множество промежуточных компонентов, которые сами их не используют. Это делает код громоздким и сложным для поддержки.

Как это работает?

Сначала создается контекст с помощью React.createContext(). Затем компонент-провайдер оборачивает дочерние компоненты и передает значение через атрибут value. Любой компонент внутри провайдера может использовать useContext(MyContext), чтобы получить это значение. При изменении значения контекста все подписанные компоненты перерендериваются.

Пример кода

import React, { createContext, useContext, useState } from 'react';

const ThemeContext = createContext('light');

function App() {
  const [theme, setTheme] = useState('light');
  return (
    <ThemeContext.Provider value={{ theme, setTheme }}>
      <Toolbar />
    </ThemeContext.Provider>
  );
}

function Toolbar() {
  const { theme, setTheme } = useContext(ThemeContext);
  return (
    <div>
      <p>Current theme: {theme}</p>
      <button onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}>
        Toggle
      </button>
    </div>
  );
}

Когда применять?

useContext идеален для глобальных данных, которые редко меняются, таких как тема, язык или аутентификация. Однако для часто обновляемого состояния (например, данные формы) лучше использовать Redux или другие библиотеки, так как контекст может вызывать лишние перерендеры. Вывод: useContext — простой и эффективный способ избежать пропс-дриллинга, но его стоит применять для данных, которые не меняются слишком часто.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    5

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

  • React

    React

Ключевые слова

#useContext

#React

#context

#props drilling

#state management

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию