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 :: promise.all vs promise.allsettled 
Javascript :: async await javascript stack overflow 
Javascript :: what is JSON TREE 
Javascript :: gql TypeError: Object(...) is not a function 
Javascript :: equivalent method load jquery with javascript 
Javascript :: how to insert html into javascript 
Javascript :: how to make dynamic title for screen in react native 
Javascript :: field array using useFormik 
Javascript :: javascript convert to array 
Javascript :: Return the average of the given array rounded down to its nearest integer. 
Javascript :: how to remove child element in jquery 
Javascript :: parsley js decimal 
Javascript :: hexstring to rgb array js 
Javascript :: javascript get main color from image 
Javascript :: get ip address javascript 
Javascript :: dockerfile 
Javascript :: parse string to int nodejs 
Javascript :: how to append data to a field in mongoose model 
Javascript :: status 502 bad api gateway error solution for aws lambda 
Javascript :: js fibonacci sequence 
Javascript :: how to make a popup in javascript -html 
Javascript :: sequelize migration 
Javascript :: disable button based on condition angular 
Javascript :: js unspecified parameters 
Javascript :: hard refresh javascript 
Javascript :: how to install jsonwebtoken in next js 
Javascript :: js encode url 
Javascript :: stringify json javascript 
Javascript :: javascript fast inverse square root 
Javascript :: filter array of objects with array of objects 
ADD CONTENT
Topic
Content
Source link
Name
4+5 =