Эйч
Эйч
  • Все менторы
Задачи/Frontend-разработчик/Оптимизация подписки на события окна в React

Оптимизация подписки на события окна в React

Условие задачи

Необходимо предотвратить излишние вызовы useEffect в компоненте WindowEvent, чтобы обработчик события добавлялся и удалялся только при реальных изменениях зависимостей.

javascriptfunction WindowEvent({
  event, 
  handler,
  options
}: {
  event: string;
  handler: EventListener;
  options?: EventListenerOptions;
}){
  useEffect(() => {
    console.log('useEffect');
    window.addEventListener(event, handler, options);

    return () => {
      window.removeEventListener(event, handler, options);
    };
  }, [event, handler, options])

  return null
}  

export default function App() {
  const [isVisible, setIsVisible] = useState(false)
  const onclick = useCallback(() => {
    setIsVisible(prev => !prev)
  }, [])

  return (
    <>
    <Button onClick={onClick}/>
    <WindowEvent event="click" handler={() => console.log("click")} />
    {
      isVisible && (<div>lorem ipsum</div>)
    }
    </>
  )
}

Профессия

Frontend-разработчик

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Профессии
Компания
С чем помогаемОтзывыВопросы и ответыСертификатыВебинарыСтать ментором

Платформа принадлежит ООО "Эйч Карьера"
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, город Москва, Старопименовский пер, д. 18 стр. 2, помещ./ком./этаж I/19/2

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта