我正在使用react组件中HTML画布上的鼠标事件,但在鼠标左键单击未触发onMouseDown/onMouseUp时有一个问题。它适用于右击和中心单击。
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坐标。
发布于 2018-03-13 18:40:52
您可以在左键单击时使用onClick:
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')
);.chart {
width: 100;
height: 100;
}
#canvas {
border: 1px black solid;
width: 50;
height: 50;
background-color: blue;
}<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>
发布于 2022-01-17 10:07:47
事件处理程序也可能是箭头函数。有关更多信息,请查看React文档处理事件。
https://stackoverflow.com/questions/49262790
复制相似问题