【发布时间】:2017-12-18 04:31:15
【问题描述】:
我正在 ReactJs 中创建一个基本应用程序来实现基本的 HTML5 拖放功能。我面临的问题是,我的 onDragStart 事件没有将事件对象传递给处理程序方法。我提到了documentation of HTML5 Drag and Drop,它显示了事件对象是如何传递给处理程序的。
这是我为onDragStart 事件实现事件处理程序的代码。
//handler method
dragStartHandler(event) {
console.log(event); // undefined
}
render() {
return (
<div draggable="true"
onDragStart={this.dragStartHandler(event)}></div>
)
}
处理程序被调用但没有事件对象。我的议程是捕获事件对象,以便我可以使用DataTransfer 接口进一步将数据绑定到事件。
请帮助我理解这种行为。
谢谢!
更新
不将事件传递给dragStartHandler 方法实际上是将事件传递给处理程序方法。与 HTML5 DND 文档中提到的不同,它只是 react 绑定方法的方式,似乎不适用于 react。根据 html 规范,我在处理程序中得到的事件是原始 Drag Event 的打包版本。这种行为让我感到困惑,因为它给出了一些 Proxy 对象可能是由反应创建的。
解决方案:虽然Proxy对象拥有原来的所有方法 拖动事件,我后来才意识到。所以你可以使用新的代理事件 对象,就像您之前作为原生 html 元素所做的那样,所有之前的 行为。
【问题讨论】:
标签: html reactjs drag-and-drop