Как определить клик за пределами компонента React?
Мы можем использовать метод createRef () для создания ссылки на любой элемент в компоненте на основе классов. Затем мы можем проверить, произошло ли событие щелчка в компоненте или вне компонента.
В функциональном компоненте мы можем использовать ловушку useRef () для создания ссылки на любой элемент.
Создание приложения React и установка модуля:
Шаг 1. Создайте приложение React, используя следующую команду:
npx создать-реагировать-приложение имя папки
Шаг 2: После создания папки проекта, т.е. имени папки , перейдите в нее с помощью следующей команды:
cd имя папки
Структура проекта: это будет выглядеть следующим образом.
App.js: теперь запишите следующий код в файл App.js. Здесь App - это наш компонент по умолчанию, в котором мы написали наш код.
Имя файла - App.js: использование базового компонента класса
Javascript
import React from 'react' ; class App extends React.Component { constructor(props) { super (props); // Creating a reference this .box = React.createRef(); } componentDidMount() { // Adding a click event listener document.addEventListener( 'click' , this .handleOutsideClick); } handleOutsideClick = (event) => { if ( this .box && ! this .box.current.contains(event.target)) { alert( 'you just clicked outside of box!' ); } } render() { return <div style={{ margin: 300, width: 200, height: 200, backgroundColor: 'green' }} // Assigning the ref to div component ref={ this .box}>{ this .props.children}</div>; } } export App; default |
Имя файла - App.js: <Использование функционального компонента / p>
Javascript
import React, { useEffect, useRef } from 'react' function App(props) { const box = useRef( null ); useOutsideAlerter(box); return (<div style={{ margin: 300, width: 200, height: 200, backgroundColor: 'green' }} ref={box}>{props.children}</div> ) } export App; default function useOutsideAlerter(ref) { useEffect(() => { // Function for click event function handleOutsideClick(event) { if (ref.current && !ref.current.contains(event.target)) { alert( "you just clicked outside of box!" ); } } // Adding click event listener document.addEventListener( "click" , handleOutsideClick); }, [ref]); } |
Шаг для запуска приложения: запустите приложение, используя следующую команду из корневого каталога проекта:
npm start
Вывод: Теперь откройте браузер и перейдите по адресу http: // localhost: 3000 / , вы увидите следующий вывод: