React · Middle · Pytanie 55 z 75
Jak komponent powinien subskrybować zdarzenie przeglądarki, np. resize?
useEffect(() => {
const onResize = () => setWidth(window.innerWidth);
window.addEventListener("resize", onResize);
return () => window.removeEventListener("resize", onResize);
}, []);- ✓Poprawna odpowiedź: Zasubskrybować w
useEffecti wypisać się tą samą funkcją w sprzątaniu - 2Zasubskrybować bezpośrednio w ciele komponentu
- 3Zasubskrybować w
useMemo
Wyjaśnienie
Bez sprzątania każde montowanie dodaje listener, który nigdy nie jest usuwany (Strict Mode to uwidacznia). Dla zewnętrznych store'ów solidniejszy jest useSyncExternalStore.