react hooks 点击空白区域隐藏组件



const
[show, setShow] = useState(false) useEffect(()=>{ // 在 document 上绑定点击事件,隐藏弹出层 document.addEventListener("click", (e) => setShow(false)); }, []) // 封装后的阻止冒泡功能 const stopPropagation = (e: any) => { e.nativeEvent.stopImmediatePropagation(); } const onShow = (e: any) => { // 使用 react 的 e.stopPropagation 不能阻止冒泡,需要使用 e.nativeEvent.stopImmediatePropagation,这里我们对其进行封装,方便多次调用 stopPropagation(e); setShow(!show) } const contentBoxAttr = { className: cx({ 'content-box': true, 'content-box-show': show }), // 方便的调用封装冒泡功能来阻止冒泡 onClick: stopPropagation } return ( <div className="main-box-top"> <div className="container-box" onClick={onShow}></div> <div {...contentBoxAttr}> <ul className="list"> /* 可以放自己的内容 */ </ul> </div> </div> </div> );

 

 

原理: 在document上绑定点击事件,隐藏弹出层

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM