cari

Rumah  >  Soal Jawab  >  teks badan

Klik acara pada komponen bertindan

Saya mempunyai dua komponen fungsi anak panah reaktif yang disusun di atas satu sama lain (menggunakan kedudukan mutlak) dan kedua-duanya mempunyai sifat onClick. Masalahnya ialah, saya ingin mengklik bahagian atas dan kedua-dua fungsi onClick menyala. Adakah terdapat cara untuk menyelesaikan masalah ini?

Ini ialah versi ringkas kod:

const Card = ({...}) => {

    const styles = {
        optionsButton: {
            minWidth:0,
            minHeight: 0,
            padding: "2px",
            position: "absolute",
            color: "#808080",
            zIndex: 1,
            right: 5,
            top: 5,
            '&:hover':{
                backgroundColor: 'rgb(0, 0, 0, 0.1)'
            }
        },
    }

    const [hovering, setHovering] = useState(false)
    const [isCardExpanded, setIsCardExpanded] = useState(false)

    const expandCard = () => {
        setIsCardExpanded(true)
    }
    const closeCard = () => {
        setIsCardExpanded(false)
    }


    const mainPaperStyle = () => {
        let style = {
            padding: "10px",
            cursor: "pointer",
            position: "absolute",
            "&:hover": {
                filter: "brightness(97%)"
            }
        }

        //Extra code here modifying color of the style, no positioning modifications

        return style
    }

    const buttonAction = () => {
        console.log("Do action!")
    }

    return(
        <>
            <Paper sx={mainPaperStyle()} onClick={expandCard} onMouseEnter={() => setHovering(true)} onMouseLeave={() => setHovering(false)}>
                Lorem Ipsum

                {hovering &&
                    <Button variant="filled"
                            id="card-button"
                            sx={styles.optionsButton}
                            onClick={() => buttonAction()}>
                        <MoreVertIcon/>
                    </Button>
                }
            </Paper>
        </>
    )
}

Tangkapan skrin di bawah menggambarkan sebab saya ingin menyusun dua komponen bersama:

Saya mahu butang muncul apabila tetikus dilegar di bahagian atas komponen Kertas. Masalahnya ialah apabila saya mengklik butang, expandCardbuttonAction menyala. (BTW, saya menggunakan UI Bahan)

P粉882357979P粉882357979273 hari yang lalu387

membalas semua(1)saya akan balas

  • P粉831310404

    P粉8313104042024-03-30 10:15:06

    Boleh guna $event.stopPropagation();.

    const firstFn = () => { // first function body };
    const secondFn = (event: MouseEventHandler) => { 
        $event.stopPropagation();
        // second function body
    }

    Jadi dalam kes anda, anda perlu menukar fungsi buttonAction kepada ini

    const buttonAction = (event) => {
        $event.stopPropagation();
        console.log("Do action!")
    }

    dan fasal balik

    return(
            <>
                 setHovering(true)} onMouseLeave={() => setHovering(false)}>
                    Lorem Ipsum
    
                    {hovering &&
                        
                    }
                
            
        )

    Anda boleh mengetahui lebih lanjut di sini

    balas
    0
  • Batalbalas