Как разработчик ReactJS, вы, возможно, сталкивались с ситуацией, когда вам нужно закрыть модальное или выпадающее меню, когда кто-то щелкает за его пределами. Это может стать настоящей проблемой, потому что вам придется отслеживать состояние компонента и события, происходящие за его пределами. Но что, если я скажу вам, что у этой проблемы есть решение?
Введите хук useOnClickOutside. Этот хук предоставляет простой способ обработки щелчка вне компонента в ReactJS. В этом блоге мы подробно рассмотрим хук и узнаем, как он работает и как мы можем использовать его в наших проектах.
Пользовательский хук - это функция JavaScript с именем, начинающимся с "use", которая может вызывать другие хуки. Пользовательский хук может извлекать логику состояния из компонента и делать ее многократно используемой. Пользовательские хуки могут сделать наш код более удобным для сопровождения и тестирования.
Хук useOnClickOutside работает путем установки слушателя событий на объекте документа. Слушатель событий прослушивает щелчки и проверяет, произошел ли щелчок за пределами компонента. Если это так, хук вызовет переданную вами функцию.
Вот код для хука useOnClickOutside:
import { useEffect } from 'react'; export function useOnClickOutside(ref, handler) { useEffect(() => { const listener = event => { if (!ref.current || ref.current.contains(event.target)) { return; } handler(event); }; document.addEventListener('mousedown', listener); document.addEventListener('touchstart', listener); return () => { document.removeEventListener('mousedown', listener); document.removeEventListener('touchstart', listener); }; }, [ref, handler]); }
В этом хуке мы используем хук useEffect для установки слушателя событий на объекте документа. Слушатель событий прослушивает щелчки мыши и события касания. Если событие щелчка или касания происходит вне компонента, хук вызовет переданную ему функцию-обработчик.
Мы также используем хук useEffect для очистки слушателей событий, когда компонент размонтируется. Это важно для предотвращения утечки памяти в нашем приложении.
Вот и все! Хук useOnClickOutside - это простой, но мощный инструмент для обработки нажатий вне компонента в ReactJS.
Вот простой пример того, как вы можете использовать хук useOnClickOutside в своем коде:
import React, { useRef } from 'react'; import { useOnClickOutside } from 'use-onclickoutside'; function Example() { const ref = useRef(); useOnClickOutside(ref, () => { console.info('clicked outside'); }); return ( <div ref = {ref}> Click anywhere outside of this box </div> ); }
В этом примере мы используем хук useRef для создания ссылки на элемент div. Затем мы передаем ссылку в хук useOnClickOutside вместе с функцией обратного вызова, которая будет вызываться, когда кто-то щелкнет за пределами div.
В заключение, хук useOnClickOutside предоставляет удобный способ обработки нажатий вне компонента в ReactJS. Если вы работаете над модалом, выпадающим меню или любым другим компонентом, который должен закрываться, когда кто-то щелкает за его пределами, этот хук может помочь. Благодаря своей простоте и возможности повторного использования, он является обязательным инструментом для любого разработчика ReactJS.
23.03.2023 11:48
В прошлом, когда вы не хотели, чтобы другие классы расширяли определенный класс, вы могли пометить его как final.
23.03.2023 08:01
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои навыки работы с React.
23.03.2023 02:41
Я часто вижу беспорядочный код CSS, особенно если проект большой. Кроме того, я совершал эту ошибку в профессиональных или личных проектах и чувствовал, что больше не хочу смотреть на длинный код CSS с нарушенной структурой.
22.03.2023 13:41
В быстро развивающемся мире веб-разработки ServiceNow для достижения успеха крайне важно оставаться на вершине последних тенденций и технологий. По мере того как растут ожидания клиентов в отношении лучшего UI/UX, увеличивается конкуренция и возрастает потребность в производительности разработчиков,...
22.03.2023 08:55
Заголовок веб-страницы играет наиболее важную роль в SEO, он помогает поисковой системе понять, о чем ваш сайт.
22.03.2023 08:25
В этой статье я рассказываю обо всех необходимых шагах, которые нужно выполнить при настройке jest в angular.