仅单击元素时如何停止触发onMouseDown?

时间:2018-12-30 05:37:57

标签: javascript html reactjs

我正在尝试开发一个游戏,其中单位(svg榆树)会随着反应而移动

应通过拖动移动单位。如果仅单击一个窗体,则应将其打开。 当我单击该单元时,会触发mousedown,但不会触发onclick。

class Unit extends Component {
  state = {
     moving:false
  };
  handleClick = (e) =>{
    console.log("Clicked");
  }
  startMove = e => {
    this.setState({moving:true})
  };
  render() {
    return (
          <g className="u-wrapper">
          <g onClick={this.handleClick}
          onMouseDown={this.startMove}>
          {this.createCircle()}
          />
        </g>
        {this.renderRangeCircle()};
      </g>
    );
  }
}
如果仅单击鼠标,则不会触发

mouseDown。 可能是触发两者的一种方式,但先单击on

1 个答案:

答案 0 :(得分:0)

不可能阻止mousedown事件那样触发,因为array.some()事件将始终最后触发。它是由按下鼠标按钮然后释放后触发的,因此很明显,在将触发mousedown的情况下,您首先总是会有一个click事件。

在文档中对此进行了解释:

  

当指针设备按钮(例如鼠标的   主按钮)被按下并在单个元素上释放。如果   在一个元素上按下按钮,然后在另一个元素上释放按钮,   在包含的最具体的祖先元素上触发事件   两者。

     

单击会在鼠标按下和鼠标按下事件之后按顺序触发