Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про React: subscription, observer

Как реализовать подписку на изменения внешнего объекта?

Вопрос проверяет понимание паттерна подписки и умение связать внешний источник изменений с жизненным циклом React-компонента.

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

Подписка реализуется через механизм, при котором внешний объект уведомляет подписчиков об изменениях. React-компонент подписывается при монтировании и отписывается при размонтировании. При получении уведомления компонент инициирует ререндер через setState или другой механизм React. Важно, чтобы подписка и отписка были симметричны.

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

Подписка — это базовый способ “сообщить” React, что во внешнем мире что-то изменилось.

Определение

Подписка (subscription) — это механизм, при котором объект хранит список слушателей и уведомляет их при изменении своего состояния.

Базовая структура внешнего объекта

Внешний объект должен уметь:

  1. Хранить состояние.

  2. Регистрировать подписчиков.

  3. Уведомлять их при изменениях.

const store = {
  value: 0,
  listeners: new Set<() => void>(),

  getState() {
    return this.value;
  },

  setState(next: number) {
    this.value = next;
    this.listeners.forEach((l) => l());
  },

  subscribe(listener: () => void) {
    this.listeners.add(listener);
    return () => this.listeners.delete(listener);
  },
};

Подписка в React-компоненте

useEffect(() => {
  const unsubscribe = store.subscribe(() => {
    setTick((v) => v + 1); // инициируем ререндер
  });

  return unsubscribe;
}, []);
  1. Подписка создаётся при монтировании.

  2. Отписка выполняется при размонтировании.

  3. React получает сигнал о необходимости рендера.

Типичные ошибки

  1. Забывать отписываться.

  2. Создавать подписку при каждом рендере.

  3. Мутировать стор без уведомления подписчиков.

Вывод

Подписка на внешний объект — это явный контракт между внешним состоянием и React, без которого ререндеры невозможны.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • React

    React

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

#subscription

#observer

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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