How to detect click outside React component ?

We can use the createRef() method to create a reference for any element in the class-based component. Then we can check whether click event occurred in the component or outside the component.
In the functional component, we can use the useRef() hook to create a reference for any element.
Creating React Application And Installing Module:
Step 1: Create a React application using the following command:
npx create-react-app foldername
Step 2: After creating your project folder i.e. foldername, move to it using the following command:
cd foldername
Project Structure: It will look like the following.
 
Project Structure
App.js: Now write down the following code in the App.js file. Here, App is our default component where we have written our code.
Filename- App.js: Using Class base Component
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 defaultApp; | 
Filename- App.js:< Using Functional Component/p>
Javascript
| import React, { useEffect, useRef } from 'react'functionApp(props) {  const box = useRef(null);  useOutsideAlerter(box);  return(<div style={{    margin: 300,    width: 200, height: 200, backgroundColor: 'green'  }}    ref={box}>{props.children}</div>  )}export defaultApp;functionuseOutsideAlerter(ref) {  useEffect(() => {    // Function for click event    functionhandleOutsideClick(event) {      if(ref.current && !ref.current.contains(event.target)) {        alert("you just clicked outside of box!");      }    }    // Adding click event listener    document.addEventListener("click", handleOutsideClick);    return() => document.removeEventListener("click", handleOutsideClick);  }, [ref]);} | 
Step to Run Application: Run the application using the following command from the root directory of the project:
npm start
Output: Now open your browser and go to http://localhost:3000/, you will see the following output:
 
				 
					


