进入 Element 时触发 onMouseLeave

Lor*_*eiß 2 javascript reactjs

我正在尝试在 React 中模拟悬停事件。所以我正在使用onMouseEnteronMouseLeave 触发状态变化。

不幸的是,当我第一次用鼠标进入 Element 时,两种方法都会被触发......

当我离开元素时,只有 onMouseLeave is triggered. Does anyone knows why the methodonMouseLeave` 在进入元素时被触发。

这是我的代码:

   handleOver(event){
        event.preventDefault();
        console.log('enter');
        if(this.state.open === false){
            this.setState({
                open: true,
                anchorEl: event.currentTarget,
            });
        }
    }
    
    handleLeave(event){
         event.preventDefault();
         console.log('leave');
         if(this.state.open === true){
             this.setState({open: false})
         }
    }
Run Code Online (Sandbox Code Playgroud)
                    <img
                        onMouseEnter={this.handleOver}
                        onMouseLeave={this.handleLeave}
                        src={InfoIcon}
                    />
                    
                    <Popover
                        open={this.state.open}
                        anchorEl={this.state.anchorEl}
                        anchorOrigin={{horizontal: 'right', vertical: 'top'}}
                        targetOrigin={{horizontal: 'left', vertical: 'top'}}
                        onRequestClose={this.handleLeave}
                        muiTheme={darkBaseTheme}
                    />
Run Code Online (Sandbox Code Playgroud)

Roc*_*ces 11

从技术上讲,这不是错误,因为onMouseEnter事件被正确触发,这会导致Popover组件在页面上呈现背景,从而触发onMouseLeave事件。

这个“问题”在[Popover] 事件处理程序问题(mouseEnter 和 mouseLeave)#7680 中讨论

幸得konradwww,上市下面的解释,导致行为的任何理智的人会期望:

<Popover
style={{ pointerEvents: 'none'}}
...
Run Code Online (Sandbox Code Playgroud)