antd实现点击按钮隐藏输入框_React怎样实现点击其他地方隐藏弹出的菜单

在React应用中,常需要实现点击按钮显示菜单,而点击其他区域则隐藏菜单的功能。通过在`componentDidMount()`中添加全局`click`事件监听,结合使用`setState()`来控制组件状态,可以实现这一需求。同时,为了防止按钮点击时触发全局隐藏菜单的逻辑,需在按钮的点击事件中阻止事件冒泡,如`e.nativeEvent.stopImmediatePropagation()`。这样,当点击特定按钮时,可以正确地切换菜单的显示与隐藏状态。
摘要由CSDN通过智能技术生成

我们经常遇到这种需求: 点击导航栏弹出菜单, 点击其他地方收回菜单.

前者比较容易实现, 在onClick中可以设置state, 通过state来判断组件的className进而实现菜单组件的显示与隐藏.

后者, 点击其他地方收回菜单, 应该怎么弄呢?

比较好的实现方法步骤如下:

在componentDidMount()中添加document的监听事件, 监听全局的click

componentDidMount() {

document.addEventListener('click', this.hideAllMenu);

}

hideAllMenu = () => {

this.setState({

checkBtnMenu: false,

newBtnMenu: false,

mineBtnMenu: false,

})

}

2.点击按钮显示菜单, 但是要在点击按钮时就把时间冒泡阻断, 防止触发全局点击隐藏菜单的方法. 注意此处阻断冒泡的方法应该这样写:e.nativeEvent.stopImmediatePropagation();

showCheckMenu = (event) => {

this.stopPropagation(event);

this.setState({

checkBtnMenu: !this.state.checkBtnMenu,

newBtnMenu: false,

mineBtnMenu: false,

})

}

showNewMenu = (event) => {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值