我正在构建一个允许将本地文件拖放到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
and dragover
事件侦听器添加到dropZone?
我应该在App上添加这些事件侦听器,并将其作为道具传递给dropZone组件吗?还是根本不需要传承
还是应该直接在dropZone上添加事件侦听器,这样我的事件处理函数才能存在于dropZone组件中?
您不需要使用道具。您只需将所有事件添加到DropZone组件中即可。
http://codepen.io/jzmmm/pen/bZjzxN?editors=0011
这是我添加事件的地方:
componentDidMount() {
window.addEventListener('mouseup', this._onDragLeave);
window.addEventListener('dragenter', this._onDragEnter);
window.addEventListener('dragover', this._onDragOver);
window.addEventListener('drop', this._onDrop);
document.getElementById('dragbox').addEventListener('dragleave', this._onDragLeave);
}
您的渲染方法:
render() {
return (
<div>
{this.props.children}
<div id="dragbox" className={this.state.className}>
Drop a file to Upload
</div>
</div>
);
}
如您在componentDidMount中看到的,我也向#dragbox添加了一个事件监听器。因为一旦将文件拖到页面上,#dragbox就会在鼠标光标下方,因此它需要进行拖拉,以防您决定不想将文件拖放到此处。
此外,dragover
还需要捕获drop
然后在我的App组件中,我可以像这样使用它:
class App extends React.Component {
render() {
return (
<DropZone>
<div>
<h1>Drag A File Here...</h1>
</div>
</DropZone>
);
}
}
是否有办法将AWT侦听器添加到SWT组件? 我以前制作了一个主要在AWT和Swing组件中运行的应用程序。现在,我有热键功能,它依赖于一个定制的库,该库监听全局键事件并返回相应的AWT键代码。 当我改变整个应用程序并使用SWT组件时,我的问题就出现了。正如我们所知,一些键现在返回一个不同的键代码,这扰乱了整个热键功能。 我想到的最初解决方案是: A.使用javax。摆动jtextfield作为my
我正在用canvas构建一个新的Javascript游戏,我想为每个对象添加一个事件监听器。我想画一个有用的操纵杆(箭头),当游戏从智能手机/平板电脑打开。所以,玩家可以通过点击每个箭头来移动角色。 这就是我所拥有的: game.js:
我的代码使用jQuery。我有一个密码输入框,我想要得到输入的密码任何时候。 下面是我的代码: 我确信这是一个正确的代码,因为当我在浏览器的控制台中输入它时,它可以工作,但当我重新加载页面时,它就不工作了 我能做什么?
问题内容: 我具有以下复合组件( ) 在下面的片段中,我想使用以下方式向该组件添加一个 事件: 当我调用Testpage时,出现以下错误: 我该如何解决这个问题? Ajax-Event应该触发UI-Bean-Methode。 谢谢罗纳德 问题答案: 您需要将其注册为Composite界面中的客户端行为。 :您将在Composite的客户端中指定的自定义事件名称。可以与实际事件名称相同。可以定做的。
问题内容: 这是我的问题:是否可以通过某种方式检查是否存在动态附加的事件侦听器?或者如何检查DOM中“onclick”(?)属性的状态?但是没有运气。这是我的html: 然后在Javascript中,将动态创建的事件侦听器附加到第二个链接: 该代码运行良好,但是我所有检测该附加侦听器的尝试均失败: 如果单击“为2添加onclick”,然后单击“[链接2]”,则事件触发良好,但“测试链接2”始终报告
我正在制作一个用于分发的JS/PHP插件。我希望它像这样容易安装: 但是,我希望这个插件附加一个窗口调整大小侦听器,而不重写,以防有任何其他脚本也需要使用该方法。是否有类似的javascript命令?我知道这不是问题,因为这不起作用,而且MDN和W3C对于采用什么参数非常模糊。 我不想要一个回答告诉我使用或,因为这些插件不友好。