热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无法在React上获取HTML5拖放的onDragStart事件

如何解决《无法在React上获取HTML5拖放的onDragStart事件》经验,为你挑选了1个好方法。

我正在ReactJs中创建一个基本应用程序,以实现基本的HTML5拖放功能。我面临的问题是,我的onDragStart事件没有将事件对象传递给处理程序方法。我已经参考了HTML5 Drag and Drop的文档,其中展示了如何将事件对象传递给处理程序。

这是我的代码,用于为onDragStart事件实现事件处理程序。

//handler method
dragStartHandler(event) {
 console.log(event); // undefined
}

render() {
 return (
   
) }

正在调用处理程序,但没有事件对象。我的日程安排是捕获事件对象,以便我可以使用DataTransfer接口进一步将数据绑定到事件。

请帮助我了解行为。

谢谢!

更新资料

不将事件传递给dragStartHandler方法实际上是将事件传递给处理程序方法。与HTML5 DND文档中提到的方法不同,它是React绑定方法的唯一方式,似乎不适用于react。我在处理程序中得到的事件是根据html规范包装的原始Drag Event版本。这种行为使我感到困惑,因为它给出了一些Proxy对象,可能是由react创建的。

解决方案:尽管Proxy对象具有原始Drag事件的所有方法,但我后来才意识到。因此,您可以像以前一样将新的Proxy事件对象用作本机html元素,并具有所有以前的行为。

Mikhail Shab.. 6

更换

OnDragStart={this.dragStartHandler(event)}

OnDragStart={this.dragStartHandler}

您应该将一个函数传递给onDragStart属性(对于其他与事件相关的其他属性,例如onClickonMouseEnter等等),而不是像过去那样调用函数。React.js会将事件对象作为参数传递给处理程序函数“幕后”。但是,您必须记住,React.js围绕本机Javascript事件创建了包装器。它的名称为“ SyntheticEvent”。有关详细信息,请参阅文档。但是,您可以在处理函数中访问本机事件(请参见下面的代码):

var Draggable = React.createClass({
    handleDrag(event) {
    console.log('react SyntheticEvent ==> ', event);
    console.log('nativeEvent ==> ', event.nativeEvent); //<- gets native JS event
  },

  render: function() {
    return (
Open console and drag me!
); } }); ReactDOM.render( , document.getElementById('container') );

看看这个例子-https: //jsfiddle.net/yrhvw0L0/2/



1> Mikhail Shab..:

更换

OnDragStart={this.dragStartHandler(event)}

OnDragStart={this.dragStartHandler}

您应该将一个函数传递给onDragStart属性(对于其他与事件相关的其他属性,例如onClickonMouseEnter等等),而不是像过去那样调用函数。React.js会将事件对象作为参数传递给处理程序函数“幕后”。但是,您必须记住,React.js围绕本机Javascript事件创建了包装器。它的名称为“ SyntheticEvent”。有关详细信息,请参阅文档。但是,您可以在处理函数中访问本机事件(请参见下面的代码):

var Draggable = React.createClass({
    handleDrag(event) {
    console.log('react SyntheticEvent ==> ', event);
    console.log('nativeEvent ==> ', event.nativeEvent); //<- gets native JS event
  },

  render: function() {
    return (
Open console and drag me!
); } }); ReactDOM.render( , document.getElementById('container') );

看看这个例子-https: //jsfiddle.net/yrhvw0L0/2/


推荐阅读
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  •   html5中template用法,html5标签  一、HTML5template元素初面  模板元素,基本上可以确定 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
  • jQuery如何判断一个元素是否被点击?
    本文介绍了使用jQuery判断一个元素是否被点击的方法,并通过示例进行了具体说明。注意要指定父级,否则会执行多次。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
author-avatar
许桂欢_173
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有