React合成事件:onClick或onContextMenu被调用后onDrag不会触发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React合成事件:onClick或onContextMenu被调用后onDrag不会触发相关的知识,希望对你有一定的参考价值。

我正在开发一个使用画布图的React应用程序。我试图像这样检测拖动:

<canvas className="mycanvas" onDrag ={this.moveObj} onDragStart={this.startMoving} onDragEnd={this.stopMoving} onDoubleClick={this.createSelectedObj}  ref={(mycanvas)=>{this.mycanvas= mycanvas;} }></canvas>

我可以拖动对象直到我点击或右键单击画布。单击或右键单击后,如果我尝试拖动它不会触发。它只在我双击画布后才会触发。

有谁知道这里出了什么问题?

答案

这个问题是因为在html5中onDrag和其他拖动相关的事件都是为拖放元素而设计的。它仅在拖放上下文中触发。

要在canvas中实现拖动行为,我使用了classic

mousedown,mouseup和mousemove事件

和使用

onDragStart={(e)=>{e.preventDefault();} 

防止在拖放上下文下拖动。

以上是关于React合成事件:onClick或onContextMenu被调用后onDrag不会触发的主要内容,如果未能解决你的问题,请参考以下文章

React.js 中的 OnClick 事件绑定

React.js 中的 OnClick 事件绑定

React.js 中的 OnClick 事件绑定

关于React的事件机制简单解释

JavaScript 常用事件大全

react合成事件