如何使用react动态设置HTML5数据属性?

YPC*_*ble 63 reactjs

我想渲染<select>输入的HTML5属性,以便我可以使用jquery图像选择器进行反应.我的代码是:

var Book = React.createClass({
    render: function() {
        return (
            <option data-img-src="{this.props.imageUrl}" value="1">{this.props.title}</option>
Run Code Online (Sandbox Code Playgroud)

问题是,即使{this.props.imageUrl}正确地传递为a prop,它也不会在HTML中呈现 - 它只是呈现为{this.props.imageUrl}.如何使变量正确传递到HTML中?

Mic*_*ley 80

您不应该将JavaScript表达式包装在引号中.

<option data-img-src={this.props.imageUrl} value="1">{this.props.title}</option>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请查看JavaScript表达式文档.

  • 另请注意,属性名称(data-whatever)必须全部小写. (16认同)
  • @praveenkumar您可以通过`e.target.dataset`访问它们.请参阅[数据集文档](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset),[数据属性文档](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes)和[此CodePen示例](https://codepen.io/BinaryMuse/pen/jaQVQM). (4认同)

Mar*_*rom 19

注意 - 如果要将数据属性传递给React组件,则需要处理它们与其他道具略有不同.

2个选项

不要使用驼峰盒

<Option data-img-src='value' ... />
Run Code Online (Sandbox Code Playgroud)

然后在组件中,由于破折号,您需要引用引号中的prop.

// @flow
class Option extends React.Component {

  props: {
    'data-img-src': string
  }
Run Code Online (Sandbox Code Playgroud)

当您稍后引用它时,您不使用点语法

  render () {
    return (
      <option data-img-src={this.props['data-img-src']} >...</option>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

或使用骆驼案

<Option dataImgSrc='value' ... />
Run Code Online (Sandbox Code Playgroud)

然后在组件中,您需要转换.

// @flow
class Option extends React.Component {

  props: {
    dataImgSrc: string
  }
Run Code Online (Sandbox Code Playgroud)

当您稍后引用它时,您不使用点语法

  render () {
    return (
      <option data-img-src={this.props.dataImgSrc} >...</option>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

主要是实现data-属性和aria-属性的特殊处理.