Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Redux: React Context, state manager, selectors, re-render optimization, Redux

Чем отличается стейт-менеджер от контекста с точки зрения селекторов?

Вопрос проверяет понимание различий между стейт-менеджером (например, Redux) и React Context в контексте оптимизации ререндеров с помощью селекторов.

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

React Context при изменении значения перерендеривает все компоненты-потребители, даже если они используют только часть данных. Стейт-менеджеры, такие как Redux, позволяют использовать селекторы, которые подписываются только на определённые части состояния. Это предотвращает лишние ререндеры и повышает производительность.

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

Разница между стейт-менеджером и контекстом

React Context — это встроенный механизм для передачи данных по дереву компонентов без пропсов. Однако у него есть недостаток: при изменении значения контекста все компоненты, использующие этот контекст, перерендериваются, даже если они не используют изменившуюся часть данных. Это может привести к проблемам производительности в больших приложениях.

Стейт-менеджеры, такие как Redux, предоставляют более гибкий подход. Они позволяют создавать селекторы — функции, которые извлекают только необходимую часть состояния. Компоненты подписываются на результат селектора, а не на всё состояние целиком. Благодаря этому ререндер происходит только тогда, когда изменяется именно та часть данных, от которой зависит компонент.

Пример с React Context

const ThemeContext = React.createContext();

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

function Header() {
  const { theme } = useContext(ThemeContext);
  // При изменении theme перерендерится и Header, и Content
}

Пример с Redux и селекторами

import { useSelector } from 'react-redux';

function Header() {
  const theme = useSelector(state => state.theme);
  // Компонент перерендерится только при изменении state.theme
}

В Redux селекторы могут быть мемоизированы (например, с помощью createSelector из Reselect), что дополнительно оптимизирует вычисления. Контекст же не предоставляет встроенных средств для мемоизации или точечной подписки.

Вывод: Используйте React Context для простых случаев, когда данные редко меняются или приложение небольшое. Для сложных состояний с частыми обновлениями и множеством потребителей лучше подходят стейт-менеджеры с селекторами, так как они обеспечивают более тонкий контроль над ререндерами и производительностью.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Redux

    Redux

  • React

    React

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

#React Context

#state manager

#selectors

#re-render optimization

#Redux

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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