首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应-左击未触发onMouseDown/onMouseUp

反应-左击未触发onMouseDown/onMouseUp
EN

Stack Overflow用户
提问于 2018-03-13 17:55:58
回答 2查看 12.5K关注 0票数 2

我正在使用react组件中HTML画布上的鼠标事件,但在鼠标左键单击未触发onMouseDown/onMouseUp时有一个问题。它适用于右击和中心单击。

代码语言:javascript
复制
handleMouseDown(event)
{
    console.log("mouse down");
}

handleMouseMove(event)
{
    console.log("mouse move");
}

handleMouseUp(event)
{
    console.log("mouse up");
}

render() {
    return (
        <div
            className="chart">
            <canvas
                id="canvas"
                onMouseDown={this.handleMouseDown}
                onMouseMove={this.handleMouseMove.bind(this)}
                onMouseUp={this.handleMouseUp.bind(this)} />
        </div>
    );

以前有人经历过吗?

编辑注释:我正在尝试获取鼠标向下事件发生的位置的X/Y坐标。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-13 18:40:52

您可以在左键单击时使用onClick

代码语言:javascript
复制
class MyComponent extends React.Component {

  constructor(props) {
    super(props);
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick(event){
    const yCoord = event.y;
    const xCoord = event.x;
    console.log("Y Coordinate = " + yCoord + 
    "\n X Coordinate = " + xCoord + ".");
    
    switch(event.which) {
      case 1: {
        console.log('Left Mouse button pressed.');
        break;
      }
      case 2: {
        console.log('Middle Mouse button pressed.');
        break;
      }
      case 3: {
        console.log('Right Mouse button pressed.');
        break;
      }
      default: {
        console.log('You have a strange Mouse!');
      }
    }
  }
  
  render() {
    return (
      <div className="chart">
        <canvas id="canvas" 
          onClick={(e) =>{this.handleClick(e.nativeEvent)}}
          onContextMenu={(e) =>
            {this.handleClick(e.nativeEvent)}}>
        </canvas>
      </div>
    );
  }
}

ReactDOM.render(
  <MyComponent />,
  document.getElementById('container')
);
代码语言:javascript
复制
.chart {
  width: 100;
  height: 100;
}

#canvas {
  border: 1px black solid;
  width: 50;
  height: 50;
  background-color: blue;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container">
  <!-- This element's contents will be replaced with your component. -->
</div>

票数 5
EN

Stack Overflow用户

发布于 2022-01-17 10:07:47

事件处理程序也可能是箭头函数。有关更多信息,请查看React文档处理事件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49262790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档