Wzorce projektowe · Middle · Pytanie 2 z 75

Dlaczego subscribe w implementacji Observera zwykle zwraca funkcję wypisującą?

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

Wyjaśnienie

Zwrócona funkcja wygodnie pasuje do funkcji czyszczącej useEffect: useEffect(() => store.subscribe(fn), []). Bez wypisania podmiot trzyma referencje do callbacków odmontowanych komponentów - wyciek i zbędne wywołania. Tak działają Redux, Zustand i useSyncExternalStore.

Do poczytania

Błąd w pytaniu

Wzorce projektowe · Middle · pytanie 2

Sprawdź się

Rozwiąż test Wzorce projektowe · Middle: pytania i odpowiedzi są tasowane, a na końcu czeka przegląd błędów.

Rozwiąż ten test