React 能够呈现自定义属性,如 http://facebook.github.io/react/docs/jsx- gotchas.html所述:
如果你想使用自定义属性,你应该在它前面加上 data-。 <div data-custom-attribute="foo" />
如果你想使用自定义属性,你应该在它前面加上 data-。
<div data-custom-attribute="foo" />
这是个好消息,除了我找不到从事件对象访问它的方法,例如:
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.style。而不是event.target我尝试:
data-
style
event.target.style
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 节点来跟踪它们。
bind()
IMO 这比依赖 DOM 事件要干净得多。
2017 年 4 月更新: 这些天我会写onClick={() => this.removeTag(i)}而不是.bind
onClick={() => this.removeTag(i)}
.bind