React 怎么实现antdesign Dropdown组件 关闭菜单的功能?

发布于 2022-09-05 03:52:38 字数 1652 浏览 20 评论 0

两个下拉菜单组件,单独操作点击展开关闭菜单、document点击关闭菜单没问题。但是点<Dropdown />1时 如果<Dropdown />2菜单是打开的 怎么让<Dropdown />2的菜单关闭?

class DropdownMenu extends React.Component {

constructor (props) {
    super(props);
    this.state = {
        showClass: 'hide',
        left: 0,
        top:0,
    }
}
textClick = (e) => {
    e.nativeEvent.stopImmediatePropagation();
    this.setState({
        showClass: 'fadeInUp',
        left: `${offset(this.textDom).left}px`,
        top: `${offset(this.textDom).top + this.textDom.offsetHeight + 10}px`,
    })
}
componentDidMount () {
    document.addEventListener('click', () => {
        this.setState({
            showClass: 'fadeOutDown'
        }, () => {
            // setTimeout(() => {
            //     this.setState({ showClass: 'hide' });
            // }, 300)
        })
    })
}
render() {
    const thisState = this.state;
    return (
        <div className={this.props.className}>
            <div
                ref={textDom => this.textDom = textDom}
                className="eam-dropdown-text clearfix"
                onClick={this.textClick}
            >
                {this.props.html.text}
            </div>
            <div
                onClick={(e) => {e.nativeEvent.stopImmediatePropagation()}}
                className={`eam-dropdown-menu animated ${this.state.showClass}`}
                style={{left: this.state.left, top: this.state.top}}
            >
                {this.props.html.menu}
            </div>
        </div>
    )
}

}

export default DropdownMenu;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苏佲洛 2022-09-12 03:52:38

利用事件冒泡 把展开关闭都放在document的事件上 按钮点击的时候num++ document点击的时候num++ 如果num是1 那就是document在点击 如果是2... 设置完展开或关闭的状态 num重置为0。

爱冒险 2022-09-12 03:52:38

这问题有点奇怪,如果改成点击触发,你说的根本不是问题;

瀞厅☆埖开 2022-09-12 03:52:38

你说的这种叫手风琴效果 网上搜索一下文章很多

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文