2015-12-03 10 views
10

biorąc pod uwagę następujące elementy:Prevent onmouseout od wypalania na elementach potomnych

render() { 

    const onMouseOver = (event) => { 
    this.setState({ isHovering: true }); 
    }; 

    const onMouseOut = (event) => { 
    this.setState({ isHovering: false }); 
    }; 

    const open = this.state.isHovering ? true : false; 

    return (
    <Nav className={styles.TopNav} bsStyle="pills" activeKey={1}> 
     <NavDropdown 
     className={dropDownClasses} 
     eventKey={1} 
     open={open} 
     title="Cards" 
     id="nav-dropdown" 
     onMouseEnter={onMouseOver} 
     onMouseOut={onMouseOut}> 
     <MenuItem eventKey="1.1">Action</MenuItem> 
     <MenuItem eventKey="1.2">Another action</MenuItem> 
     </NavDropdown> 
     <NavItem className={styles.navLink} eventKey={2}>Blog</NavItem> 
    </Nav> 
); 

Jak mogę zapobiec onMouseOut wypalania, gdy wskaźnik myszy znajduje się nad dzieckiem NavDropdown.

Czy mogę wykryć, czy mam dziecko w usłudze onMouseOut?

Odpowiedz

16

Nie dotyczy to konkretnej reakcji. mouseover i mouseout bańki zdarzeń, więc program obsługi wyzwala również dzieci elementu. mouseenter i mouseleave nie bańka.

Powinieneś posłuchać numeru mouseleave.

+1

Dzięki. W przypadku punktów bonusowych możesz odpowiedzieć na moje jeszcze bardziej szczegółowe pytanie, które wymaga tej samej odpowiedzi: http://stackoverflow.com/questions/34047269/how-to-create-a-hover-dropdown-in-react-bootsrap – SystemicPlural

+0

Powinien być zamknięty jako duplikat IMO. –

+0

Nigdy wcześniej tego nie robiłem. Wszczęłam ten proces. – SystemicPlural

Powiązane problemy