react中添加监听事件 阻止事件冒泡 点击空白隐藏元素

这篇博客展示了如何使用React实现一个功能,即点击按钮显示元素,而点击元素外部则隐藏元素。主要涉及`useState`和`useEffect`钩子,以及事件冒泡的阻止。通过添加和移除事件监听器来控制元素的显示状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单写一个点击按钮显示元素,点击元素外的区域元素隐藏的demo

 

先定义一个事件,负责隐藏元素

const hidden = () => {
    setStatus(false)
}

uesEffect中添加监听和清除监听

useEffect(() => {
    document.addEventListener('click', hidden)
    
    return () => {
        document.removeEventListener('click', hidden)
    }
})

点击按钮和元素本身设置显示元素,并且添加阻止事件冒泡

const testlick = e => {
    e.stopPropagation()
    setStatus(true)
}

 

完整代码

import React, { useState, useEffect } from 'react'
import { Button } from 'antd'

const EventPop = () => {

    const [status, setStatus] = useState(false)

    useEffect(() => {
        // 添加监听事件
        document.addEventListener('click', hidden)

        return () => {
            // 销毁的时候清除监听
            document.removeEventListener('click', hidden)
        }
    })

    const hidden = () => {
        setStatus(false)
    }

    const testlick = e => {
        // 阻止事件冒泡
        e.stopPropagation()
        setStatus(true)
    }

    return (
        <div style={{ margin: 50 }}>
            <Button onClick={testlick}>点击我</Button>
            <div onClick={testlick} style={{ display: status ? '' : 'none', width: '200px', height: '200px', backgroundColor: 'tomato' }}></div>
        </div>
    )
}

export default EventPop

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值