React · Middle · Запитання 55 з 75
Як компоненту підписатися на браузерну подію на кшталт resize?
useEffect(() => {
const onResize = () => setWidth(window.innerWidth);
window.addEventListener("resize", onResize);
return () => window.removeEventListener("resize", onResize);
}, []);- ✓Правильна відповідь: Підписатися в
useEffectі відписатися тією самою функцією в очищенні - 2Підписатися прямо в тілі компонента
- 3Підписатися в
useMemo
Пояснення
Без очищення кожне монтування додає слухача, якого ніколи не видаляють (Strict Mode робить це помітним). Для зовнішніх сторів надійніший useSyncExternalStore.