防止 onmouseout 触发子元素

IT技术 reactjs
2021-05-02 13:27:34

鉴于以下情况:

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

当鼠标悬停在 NavDropdown 的子级上时,如何防止 onMouseOut 触发。

我可以在 onMouseOut 中检测我是否超过了孩子吗?

1个回答

这不是 React 特定的。mouseovermouseout事件冒泡,因此处理程序也会为元素的子元素触发。mouseenter并且mouseleave不要冒泡。

所以你应该听听mouseleave