Detect click outside React component

后端 未结 30 1102
日久生厌
日久生厌 2020-11-22 13:54

I\'m looking for a way to detect if a click event happened outside of a component, as described in this article. jQuery closest() is used to see if the target from a click e

30条回答
  •  南笙
    南笙 (楼主)
    2020-11-22 14:18

    Here is the solution that best worked for me without attaching events to the container:

    Certain HTML elements can have what is known as "focus", for example input elements. Those elements will also respond to the blur event, when they lose that focus.

    To give any element the capacity to have focus, just make sure its tabindex attribute is set to anything other than -1. In regular HTML that would be by setting the tabindex attribute, but in React you have to use tabIndex (note the capital I).

    You can also do it via JavaScript with element.setAttribute('tabindex',0)

    This is what I was using it for, to make a custom DropDown menu.

    var DropDownMenu = React.createClass({
        getInitialState: function(){
            return {
                expanded: false
            }
        },
        expand: function(){
            this.setState({expanded: true});
        },
        collapse: function(){
            this.setState({expanded: false});
        },
        render: function(){
            if(this.state.expanded){
                var dropdown = ...; //the dropdown content
            } else {
                var dropdown = undefined;
            }
    
            return (
                
    {this.props.displayValue}
    {dropdown}
    ); } });

提交回复
热议问题