请注意,JSX完全支持所有aria- * HTML属性。 尽管React中的大多数DOM属性和属性都是驼峰式的, 这些属性应使用连字符大小写(也称为kebab-case, lisp-case等),就像使用纯HTML:
AFAIK,在响应中,每个HTML属性都重命名为camelCase。
有什么理由解释为什么aria-*
保留其原始名称吗?
奖金,有人知道是<input autoFocus='autofocus'/>
还是<input autofocus='autofocus'/>
。前者看起来正确,因为我的编辑器未发出任何警告。但是,属性名称与其值之间是否不一致?
在原始属性名称的autocomplete
和autoComplete
之间没有连字符的情况下,也应该是auto
或complete
吗?
答案 0 :(得分:2)
React API参考提供了有关此信息。在DOM Elements处显示:
在React中,所有DOM属性和属性(包括事件处理程序)都应被驼峰化。例如,HTML属性
tabindex
对应于React中的属性tabIndex
。aria-*
和data-*
属性是例外,应将其小写。例如,您可以将aria-label
保留为aria-label
。
All Supported HTML Attributes部分将autoComplete
和autoFocus
用作预期名称。
现在,这实际上并不能回答为什么 aria-*
属性仍然是小写的,但是至少这清楚地说明了应如何使用它们。
推测:也许这与在React版本15和16之间发生的更改有关。博客文章“ DOM Attributes in React 16”解释说,React现在允许使用自定义属性16个,先前已被删除。它描述了一些担忧,即内部属性白名单已成为维护负担,需要简化。现在,可以在JSX中包含任意属性。我不知道它在内部如何工作,但是我想aria-*
属性在内部白名单的故事中起了一定作用。例如,WAI-ARIA 1.1最近引入了几个新的aria-*
属性,而WAI Personalization Semantics Content Module工作草案引入了许多aui-*
属性。这两个都需要列入白名单。