ReactJs:在没有JSX的元素上设置数据属性

Dav*_*idM 16 reactjs

React支持元素上的data-*和aria-*属性.使用组件API时,我猜这些属性可以像其余的一样设置:

React.DOM.div({style: {...}, dataMyFoo: 'bar'}, ...)
Run Code Online (Sandbox Code Playgroud)

不.这不起作用.该dataMyFoo属性被静默忽略.我在某处读到这些都需要全部小写.怎么样:

React.DOM.div({style: {...}, datamyfoo: 'bar'}, ...)
Run Code Online (Sandbox Code Playgroud)

再一次,默默地忽略了.

这可能吗?如果是这样,秘密是什么?我花了很长时间搜索而没有找到答案.

Dav*_*idM 26

事实证明,答案是使用连字符分隔的全部小写名称作为数据属性,如下所示:

React.DOM.div({style: {...}, 'data-my-foo': 'bar'}, ...)
Run Code Online (Sandbox Code Playgroud)

请注意,在这种情况下必须引用属性名称,因为Javascript中的标识符不允许使用连字符.

  • 是的,这是正确的.我们正在考虑将来转移到`dataSet:{myFoo:'bar'}`模型,这会将`data-my-foo ="bar"`放入DOM中.这紧跟DOM API以访问数据属性. (2认同)
  • @PaulO'Shannessy 听起来很完美。我最初尝试的其中一件事是`data: {myFoo: 'bar'}`,因此这与我自然倾向于做的事情非常相似。 (2认同)
  • 我在v0.12.1.{'data-foo-bar':true}呈现为<... data-foo-bar ="true">而{'data-foo-bar':''}呈现为<... data-foo-吧>所以我可能会这样做. (2认同)