React js 点击输入框其它位置隐藏下拉框

本文介绍如何在React中实现点击页面空白处隐藏特定组件(如搜索框下拉菜单)的功能。通过在document上绑定点击事件,并利用事件冒泡原理,结合React组件内部阻止冒泡的方法,可以达到良好的交互效果。

 案例如下:输入框输入内容下拉框展示,点击除搜索组件外其它区域隐藏下拉框

 1、document上添加点击事件,设置下拉框为隐藏状态。写在useEffect里是函数式组件写法,依赖项为空数组执行一次,将事件绑定到document上。

useEffect(()=>{
  // 点击其他地方隐藏搜索下拉框
  document.addEventListener('click', () => {
    setInputStatus(false)
  })
},[])

2、在封装搜索组件的最外层添加阻止冒泡事件,就达到了点击搜索组件,下拉框不隐藏;点击除搜索组件外其它区域,下拉框隐藏。

 3、阻止冒泡在react中写法略有不同,在nativeEvent属性上的stopImmediatePropagation。

// 阻止冒泡
const stopBubble = (event: React.MouseEvent<HTMLDivElement, MouseEvent>)=> {
  event.nativeEvent.stopImmediatePropagation() //阻止冒泡
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值