Search
 
SCRIPT & CODE EXAMPLE
 

JAVASCRIPT

click outside React component

const componentRef = useRef();

useEffect(() => {
    document.addEventListener("click", handleClick);
    return () => document.removeEventListener("click", handleClick);
    function handleClick(e: any) {
        if(componentRef && componentRef.current){
            const ref: any = componentRef.current
            if(!ref.contains(e.target)){
                // put your action here
            }
        }
    }
}, []);
Comment

react click outside

import React, { useRef, useEffect } from "react";

/**
 * Hook that alerts clicks outside of the passed ref
 */
function useOutsideAlerter(ref) {
    useEffect(() => {
        /**
         * Alert if clicked on outside of element
         */
        function handleClickOutside(event) {
            if (ref.current && !ref.current.contains(event.target)) {
                alert("You clicked outside of me!");
            }
        }

        // Bind the event listener
        document.addEventListener("mousedown", handleClickOutside);
        return () => {
            // Unbind the event listener on clean up
            document.removeEventListener("mousedown", handleClickOutside);
        };
    }, [ref]);
}

/**
 * Component that alerts if you click outside of it
 */
export default function OutsideAlerter(props) {
    const wrapperRef = useRef(null);
    useOutsideAlerter(wrapperRef);

    return <div ref={wrapperRef}>{props.children}</div>;
}
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

detect click outside react component

import { useState, useEffect, useRef } from 'react';

export default function useComponentVisible(initialIsVisible) {
    const [isComponentVisible, setIsComponentVisible] = useState(initialIsVisible);
    const ref = useRef(null);

    const handleClickOutside = (event) => {
        if (ref.current && !ref.current.contains(event.target)) {
            setIsComponentVisible(false);
        }
    };

    useEffect(() => {
        document.addEventListener('click', handleClickOutside, true);
        return () => {
            document.removeEventListener('click', handleClickOutside, true);
        };
    }, []);

    return { ref, isComponentVisible, setIsComponentVisible };
}
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside class implementation

import React, { Component } from 'react';
import PropTypes from 'prop-types';

/**
 * Component that alerts if you click outside of it
 */
export default class OutsideAlerter extends Component {
    constructor(props) {
        super(props);

        this.wrapperRef = React.createRef();
        this.setWrapperRef = this.setWrapperRef.bind(this);
        this.handleClickOutside = this.handleClickOutside.bind(this);
    }

    componentDidMount() {
        document.addEventListener('mousedown', this.handleClickOutside);
    }

    componentWillUnmount() {
        document.removeEventListener('mousedown', this.handleClickOutside);
    }

    /**
     * Alert if clicked on outside of element
     */
    handleClickOutside(event) {
        if (this.wrapperRef && !this.wrapperRef.current.contains(event.target)) {
            alert('You clicked outside of me!');
        }
    }

    render() {
        return <div ref={this.wrapperRef}>{this.props.children}</div>;
    }
}

OutsideAlerter.propTypes = {
    children: PropTypes.element.isRequired,
};
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

outside click react

import { useEffect, MutableRefObject } from 'react'

export const useOutsideClick = <T extends Array<MutableRefObject<any>>>(
  ref: T,
  callback: () => void
): void => {
  useEffect(() => {
    const handler = (event: MouseEvent): void => {
      // Check if the mouse click was within the element's ref.

      if (!ref || ref.length === 0) return
      const node = ref.find((x) => x?.current?.contains(event?.target as Node))

      if (!node) {
        callback()
      }
    }

    window.addEventListener('mousedown', handler)

    return (): void => {
      window.removeEventListener('mousedown', handler)
    }
  }, [ref, callback])
}

// Usage (it should be in the component*)
const firstRef  = useRef(null)
const secondRef = useRef(null)
const handleClick = () => { console.log('Clicked outside ref') }

useOutsideClick([firstRef, secondRef], handleClick)
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

react click outside

yarn add react-detect-click-outside
npm i react-detect-click-outside
Comment

PREVIOUS NEXT
Code Example
Javascript :: crop image canvas 
Javascript :: unload in jquery 
Javascript :: how to make a textarea unwritable in react native 
Javascript :: width and height in js 
Javascript :: how to hide javascript code 
Javascript :: process.env in nextjs 
Javascript :: string to array javascript 
Javascript :: angular disabled condition based 
Javascript :: sample json 
Javascript :: nohup run nodejs 
Javascript :: cypress get selected dropdown value 
Javascript :: inject image javascript 
Javascript :: how to change the color of error message in jquery validation 
Javascript :: mock a function jest react 
Javascript :: regex not contain 
Javascript :: Array Pagination in JS 
Javascript :: react change state async 
Javascript :: how to get data from url in vuejs 
Javascript :: factorial in javascript 
Javascript :: check if element has specific child javascript 
Javascript :: use onchange with react select 
Javascript :: ReferenceError: primordials is not defined 
Javascript :: javascript pass object by value 
Javascript :: useeffect with cleanup 
Javascript :: jquery validation plugin google recaptcha 
Javascript :: javascript string contains function 
Javascript :: socket io close client connection 
Javascript :: how to call rest api with the useeffect hook in react 
Javascript :: wait for ajax to finish 
Javascript :: javascript click coordinates on page 
ADD CONTENT
Topic
Content
Source link
Name
9+1 =