React OnMouseDown 事件不工作而 OnMouseUp 工作正常。(在 SVG 元素上)

React OnMouseDown event is not working whereas OnMouseUp is working fine.(on SVG elements)

我有一个 svg 元素,我需要在其上捕获 mousedown 事件。 这是代码。

//code snippet...
<g onMouseDown={this.clickHandler}>
    <circle ...></circle>
    <text> </text>
</g>

点击处理程序的代码就这么简单。

clickHandler() {
    alert("mouse down")
 }

onMouseUpOnClick 工作正常,但 onMouseDown

相同的 onMouseDown 事件在 SVG 之外工作正常(我试过 Button)

关于错误的任何想法。

React Version: 16.5.2

class Hello extends React.Component {
  onDown() {
    console.log("Down");
  }
  onClick() {
    console.log("Click");
  }

  render() {
    return (
      <div>
        <svg >
          <g onClick={this.onClick} onMouseDown={this.onDown} >
            <circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
          </g>
        </svg>
      </div>
    );
  }
}

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);

与 console.log 一起工作正常 link

OnMouseDown 如果您还实现了拖动功能,将获得一个块。

要捕获 OnMouseDown,您需要从 dragStartEvent

中删除 event.stopPropogation()

另一件有趣的事情是,如果您不想删除 event.stopPropogation(),您仍然可以执行您打算在 dragStartEvent 事件中对 OnMouseDown 执行的所有操作。

希望这对您有所帮助...