2015-12-03 66 views
10

考慮以下幾點:防止從鼠標移開射擊子元素

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

如何防止的onmouseout當鼠標懸停NavDropdown的孩子開槍。

我可以檢測到我是否在onMouseOut上的一個孩子?

回答

16

這不是特定的反應。 mouseovermouseout事件冒泡,所以處理程序也觸發元素的子元素。 mouseentermouseleave不要泡。

所以你應該聽取mouseleave來代替。

+1

謝謝。對於獎勵積分,你可以回答我的更具體的問題,需要相同的答案:http://stackoverflow.com/questions/34047269/how-to-create-a-hover-dropdown-in-react-bootsrap – SystemicPlural

+0

應該關閉作爲一個重複的IMO。 –

+0

我從來沒有這樣做過。我已經啓動了這個過程。 – SystemicPlural