为什么对驼峰中没有wai-aria有反应?

时间:2018-09-19 05:00:08

标签: reactjs accessibility naming-conventions wai-aria camelcasing

来自react docs

  

请注意,JSX完全支持所有aria- * HTML属性。   尽管React中的大多数DOM属性和属性都是驼峰式的,   这些属性应使用连字符大小写(也称为kebab-case,   lisp-case等),就像使用纯HTML:

AFAIK,在响应中,每个HTML属性都重命名为camelCase。 有什么理由解释为什么aria-*保留其原始名称吗?

奖金,有人知道是<input autoFocus='autofocus'/>还是<input autofocus='autofocus'/>。前者看起来正确,因为我的编辑器未发出任何警告。但是,属性名称与其值之间是否不一致?

在原始属性名称的autocompleteautoComplete之间没有连字符的情况下,也应该是autocomplete吗?

1 个答案:

答案 0 :(得分:2)

React API参考提供了有关此信息。在DOM Elements处显示:

  

在React中,所有DOM属性和属性(包括事件处理程序)都应被驼峰化。例如,HTML属性tabindex对应于React中的属性tabIndexaria-*data-*属性是例外,应将其小写。例如,您可以将aria-label保留为aria-label

All Supported HTML Attributes部分将autoCompleteautoFocus用作预期名称。

现在,这实际上并不能回答为什么 aria-*属性仍然是小写的,但是至少这清楚地说明了应如何使用它们。

推测:也许这与在React版本15和16之间发生的更改有关。博客文章“ DOM Attributes in React 16”解释说,React现在允许使用自定义属性16个,先前已被删除。它描述了一些担忧,即内部属性白名单已成为维护负担,需要简化。现在,可以在JSX中包含任意属性。我不知道它在内部如何工作,但是我想aria-*属性在内部白名单的故事中起了一定作用。例如,WAI-ARIA 1.1最近引入了几个新的aria-*属性,而WAI Personalization Semantics Content Module工作草案引入了许多aui-*属性。这两个都需要列入白名单。