2015-12-03 10 views
10

Angesichts der folgenden:Prevent Onmouseout von Brennen auf untergeordneten Elemente

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> 
); 

Wie kann ich verhindern, dass onMouseOut Brennen, wenn die Maus über ein Kind von NavDropdown ist.

Kann ich erkennen, ob ich über ein Kind in onMouseOut bin?

Antwort

16

Dies ist nicht reaktionsspezifisch. mouseover und mouseout Ereignisse Blase, so löst der Handler auch für Kinder des Elements. mouseenter und mouseleave nicht sprudeln.

Sie sollten also stattdessen mouseleave hören.

+1

Danke. Für Bonuspunkte können Sie meine noch spezifischere Frage beantworten, die dieselbe Antwort benötigt: http://stackoverflow.com/questions/34047269/how-to-create-a-hover-dropdown-in-react-bootsrap – SystemicPlural

+0

Sollte geschlossen werden als ein Duplikat IMO. –

+0

Das habe ich noch nie gemacht. Ich habe den Prozess initiiert. – SystemicPlural

Verwandte Themen