【问题标题】:Close dropdown when clicking outside using javascript/reactjs使用 javascript/reactjs 在外部单击时关闭下拉菜单
【发布时间】:2017-11-22 09:17:40
【问题描述】:

我创建了一个下拉菜单,并在用户单击菜单图标时打开菜单。我已经使用反应状态做到了这一点。当用户在菜单元素外点击时如何关闭下拉菜单?

下拉菜单

class DropDown extends Component {

    constructor(props) {
        super(props);

        this.myFunction = this.myFunction.bind(this);


        this.state = {

            openmenu:false

        }

    };

    myFunction(e) {

        e.stopPropagation();

        this.setState({

            openmenu: !this.state.openmenu

        })


    }

    render() {

        return (
            <div className="dropdown small_font" id="myDropdown" onMouseDown={this.onMouseDown} onMouseUp={this.onMouseUp}>
                {/*<img src={settings} onClick={this.myFunction} className="user_settings_icon"></img>*/}
                <i className="fa fa-cog user_settings_icon" style={{marginTop: '6px'}} onClick={this.myFunction}
                   aria-hidden="true"></i>
                {this.state.openmenu?
                <div className="dropdown-content" id="myDropdown2">
                    {/*<div id="myDropdown" className={this.props.actionDropDownCSS}>*/}
                    <a className="dropdown_item"><i className="fa fa-trash-o margin_right10px" aria-hidden="true"></i>Delete</a>
                    <a className="dropdown_item"><i className="fa fa-flag-o margin_right10px" aria-hidden="true"></i>Report</a>
                    <a className="dropdown_item"><i className="fa fa-minus-square-o margin_right10px" aria-hidden="true"></i>Unfriend</a>
                    <a className="dropdown_item"><i className="fa fa-sign-out margin_right10px" aria-hidden="true"></i>Leave group</a>
                </div>:null
                }
            </div>

        );
    }
}

【问题讨论】:

标签: javascript jquery html reactjs drop-down-menu


【解决方案1】:

你可以在图标上添加一个 onBlur() 事件,并编写一个函数来关闭菜单

这样的事情会起作用

this.closeMenu(){
    this.setState({
            openmenu: false
        })
}
<i onBlur={this.closeMenu} />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-23
    • 2023-02-23
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多