Патерни проєктування · Middle · Запитання 2 з 75

Чому функція subscribe у реалізації Observer зазвичай повертає функцію відписки?

function subscribe(listener) {
  listeners.add(listener);
  return () => listeners.delete(listener);
}

Пояснення

Повернена функція зручно лягає в cleanup useEffect: useEffect(() => store.subscribe(fn), []). Без відписки суб'єкт тримає посилання на колбеки розмонтованих компонентів - це витік і зайві виклики. Так влаштовані Redux, Zustand, useSyncExternalStore.

Де почитати

Помилка в запитанні

Патерни проєктування · Middle · запитання 2

Перевірте себе

Пройдіть тест Патерни проєктування · Middle: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест