Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Redux: selector

Почему селекторы вызываются при любом изменении store?

Вопрос проверяет понимание механизма подписки компонентов на Redux store и принципов обновления данных.

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

Селекторы вызываются при любом изменении store, потому что Redux не знает, какие данные реально изменились.
Store сообщает подписчикам о любом обновлении состояния.
Селекторы сами решают, изменился ли нужный им фрагмент.
Это нормальное поведение Redux.

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

Redux использует широкую модель уведомлений, а не точечные события.

Определение

Селектор — это функция, которая извлекает часть данных из состояния Redux store.

Как работает обновление store

При каждом dispatch:

  • reducer возвращает новое состояние

  • store уведомляет всех подписчиков

  • каждый подписчик повторно вызывает свои селекторы

Redux не анализирует, какие части состояния изменились.

Почему так устроено

Такой подход:

  • упрощает реализацию Redux

  • делает поведение предсказуемым

  • перекладывает оптимизацию на уровень селекторов

Роль мемоизации

Чтобы избежать лишних вычислений:

  • используют мемоизированные селекторы

  • применяют reselect

Мемоизация позволяет:

  • вернуть старое значение

  • предотвратить лишний перерендер

Связь с React

В React:

  • useSelector сравнивает результаты селектора

  • при равенстве по ссылке перерендер не происходит

Краткий вывод

Селекторы вызываются всегда, но перерендер зависит от результата. Оптимизация достигается мемоизацией селекторов.

Уровень

  • Рейтинг:

    4

  • Сложность:

    8

Навыки

  • Redux

    Redux

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

#selector

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