我正在构建一个组件,允许将本地文件拖放到 div 上。然后是有关已删除文件的信息输出。
我的问题是我不知道如何正确附加事件侦听器drop
以及dragover
在创建组件时。
我的 App 组件是我所有逻辑所在的地方(用于放置和拖动的处理程序),我创建了一个单独的组件,文件将放置在其中 - dropZone 组件。
我尝试将事件侦听器放在我的 App 组件上的 dropZone 标记上componentDidMount
,如果我的 dropZone 组件已呈现,则在其中放置一个事件侦听器:
componentDidMount(){
const dropZone = document.getElementById('dropZone');
dropZone.addEventListener('dragover', this.allowDrop.bind(this))
dropZone.addEventListener('drop', this.dropHandler.bind(this))
}
这没有用
然后我尝试将它放在我的应用程序组件上的 dropZone 标签中:
<DropZone dropZone = {"dropZone"} onDragOver = {this.allowDrop.bind(this)}
onDrop ={this.dropHandler.bind(this)} >
</DropZone>
这也没有向 dropZone 添加事件侦听器。我已经尝试了其他一些事情,但这些是我认为应该工作的事情。
所以我的问题是,
如何将
drop
和dragover
事件侦听器添加到 dropZone?我应该在 App 上添加这些事件侦听器并将它们作为props传递给 dropZone 组件吗?或者甚至不需要传递
或者我应该直接在 dropZone 上添加事件侦听器,以便我的事件处理函数存在于 dropZone 组件中?