当前位置: 首页 > 知识库问答 >
问题:

如何从React中的事件对象访问自定义属性?

艾昊明
2023-03-14

React能够按照http://facebook.github.io/React/docs/jsx-gotchas.html中的描述呈现自定义属性:

如果您想使用一个自定义属性,您应该在它前面加上data-。

这是个好消息,但我找不到从事件对象访问它的方法,例如:

render: function() {
...
<a data-tag={i} style={showStyle} onClick={this.removeTag}></a>
...
removeTag: function(event) {
    this.setState({inputVal: event.target????}); 
},

元素和data-属性以html格式呈现。像style这样的标准属性可以作为event.target.stylefine访问。而不是event.target:

 event.target.props.data.tag
 event.target.props.data["tag"]
 event.target.props["data-tag"]  
 event.target.data.tag
 event.target.data["tag"]
 event.target["data-tag"]

这些都没用。


匿名用户

以一种可能与您所要求的不同的方式帮助您获得所需的结果:

render: function() {
    ...
    <a data-tag={i} style={showStyle} onClick={this.removeTag.bind(null, i)}></a>
    ...
},
removeTag: function(i) {
    // do whatever
},

请注意bind()。因为这都是javascript,所以您可以做类似的方便的事情。我们不再需要将数据附加到DOM节点以跟踪它们。

这比依赖DOM事件要干净得多。

2017年4月更新:这些天我会写onclick={()=>this.removeTag(I)}而不是.bind

匿名用户

event.target提供了本机DOM节点,然后需要使用常规DOMAPI来访问属性。下面是关于如何做到这一点的文档:使用数据属性。

您可以执行event.target.dataset.tagevent.target.getAttribute('data-tag');两个都管用。

共有3个答案

齐典
2023-03-14
相关问题
后星河
2023-03-14

event.target提供了本机DOM节点,然后需要使用常规DOMAPI来访问属性。下面是关于如何做到这一点的文档:使用数据属性。

您可以执行event.target.dataset.tagevent.target.getAttribute('data-tag');两个都管用。

袁奇文
2023-03-14

以一种可能与您所要求的不同的方式帮助您获得所需的结果:

render: function() {
    ...
    <a data-tag={i} style={showStyle} onClick={this.removeTag.bind(null, i)}></a>
    ...
},
removeTag: function(i) {
    // do whatever
},

请注意bind()。因为这都是javascript,所以您可以做类似的方便的事情。我们不再需要将数据附加到DOM节点以跟踪它们。

这比依赖DOM事件要干净得多。

2017年4月更新:这些天我会写onclick={()=>this.removeTag(I)}而不是.bind

 类似资料:
  • React能够按照http://facebook.github.io/React/docs/jsx-gotchas.html中的描述呈现自定义属性: 如果您想使用一个自定义属性,您应该在它前面加上data-。 这是个好消息,但我找不到从事件对象访问它的方法,例如: 元素和属性以html格式呈现。像这样的标准属性可以作为fine访问。而不是: 这些都没用。 匿名用户 以一种可能与您所要求的不同的方式

  • 我们知道,在 CampusBuilder 中创建的物体,只有在编辑了 UserID、Name 或者自定义属性后,导入到 ThingJS 中才能成为独立的管理对象,被程序读取或修改。 从 CampusBuilder 导入的用户自定义的属性可通过 userData 属性访问到。 访问自定义属性的语法 obj.userData[propertyName]; 其中,propertyName 为自定义属

  • 问题内容: 如何根据自定义属性排序ArrayList中的对象? 问题答案: 从实现,它就有一个像方法一样的方法。 因此,你的自定义设置应如下所示: 该方法必须返回一个,因此无论如何你都无法直接返回一个你计划中的。 你的排序代码几乎就像你写的那样: 如果你不需要重用比较器,则编写所有这些内容的一种更短的方法是将其编写为内联匿名类: 自从Java-8 现在,你可以通过使用lambda表达式来以较短的形

  • 我刚刚用打字稿开始了一个新的反应项目,在功能组件中定义自定义道具时遇到了困难。 我查找了如何定义自定义道具,并找到了一种定义接口的方法,该接口详细描述了我传递给函数的道具类型,但是当我试图在我的主应用程序上运行它时,我得到一个错误消息 类型“{ digit: number; }”不能分配给类型“IntrinsicAttributes”。属性“数字”在类型“内部属性”上不存在。TS2322 我的代码

  • 问题内容: 首先看下面的JavaScript对象 我想将值设置为与相同,因此我将对象值放在前面,但它对我不起作用,我也使用过,但仍然失败。我的问题是如何访问对象内对象的属性。 一些用户沉迷于问“您想做什么或发送脚本等”,对于那些人来说,答案很简单:“我想访问对象内的对象属性”,上面提到了脚本。 任何帮助将不胜感激 :) 问题答案: 使用 对象文字 语法时,不能在初始化期间引用对象。创建对象后,需要