React · Middle · Frage 55 von 75
Wie sollte eine Komponente ein Browser-Event wie resize abonnieren?
useEffect(() => {
const onResize = () => setWidth(window.innerWidth);
window.addEventListener("resize", onResize);
return () => window.removeEventListener("resize", onResize);
}, []);- 1In
useEffect, mit Abmeldung im Cleanup - 2Direkt im Komponentenrumpf bei jedem Rendern
- 3In
useMemo, damit es nur bei Bedarf läuft
Antwort zeigen
Richtige Antwort: In useEffect, mit Abmeldung im Cleanup
Erklärung
Ohne Cleanup fügt jedes Mounten einen Listener hinzu, der nie entfernt wird (Strict Mode macht das sichtbar). Für externe Stores ist useSyncExternalStore die robustere Option.