【发布时间】:2017-05-19 19:13:27
【问题描述】:
如果您转到React home page 并将属性className='button' 添加到第一个示例“A Simple Component”,您应该会得到以下结果:
(即带有“Hello Jane”的 div 现在看起来像一个按钮)
如果您还添加属性is='super-nice-button',您应该会得到以下结果:
(即按钮样式消失了)
你为什么问?似乎当您将 className 与 is 结合使用时,react 不会在结果 dom 节点上生成 class 属性,而是生成 classname (这显然对浏览器没有意义)。请注意下面的区别。
我的问题:为什么在 react 元素上使用 is 属性时,react 会生成 classname 而不是 class(并且基本上会破坏所有样式)?
(背景:我正在使用内联样式(或Fela)并且我喜欢使用is 属性来标记我的div/面板,这样我可以在单击“检查元素”,而无需切换到“React devtools”。我知道这是一种 hack,但 is 是 React 和 HTML 中受支持的属性,这是一个很好的简短词:))
【问题讨论】:
-
可能是因为
is不是有效的元素属性,解析器会注意到这一点并跳过对元素的所有解析。纯属猜测。 -
is实际上是 React 中支持的 HTML 属性:facebook.github.io/react/docs/dom-elements.html -
我明白了,谢谢,忽略我的评论 OP
标签: reactjs