Reactjs 为什么不在camelCase中?

Reactjs 为什么不在camelCase中?,reactjs,accessibility,naming-conventions,wai-aria,camelcasing,Reactjs,Accessibility,Naming Conventions,Wai Aria,Camelcasing,从 请注意,JSX完全支持所有aria-*HTML属性。 而React中的大多数DOM属性和属性都是大小写的, 这些属性应为连字符大小写(也称为烤肉串大小写, lisp大小写等),因为它们在纯HTML中: 另外,在react中,每个HTML属性都被重命名为camelCase。 是否有任何理由解释为什么aria-*保留其原始名称 奖金,有人知道吗,应该是还是。前者看起来是正确的,因为我的编辑器没有抛出任何警告。但是属性名和属性值之间是否不一致 它是否也应该是autocomplete或autocom

请注意,JSX完全支持所有aria-*HTML属性。 而React中的大多数DOM属性和属性都是大小写的, 这些属性应为连字符大小写(也称为烤肉串大小写, lisp大小写等),因为它们在纯HTML中:

另外,在react中,每个HTML属性都被重命名为camelCase。 是否有任何理由解释为什么
aria-*
保留其原始名称

奖金,有人知道吗,应该是
还是
。前者看起来是正确的,因为我的编辑器没有抛出任何警告。但是属性名和属性值之间是否不一致


它是否也应该是
autocomplete
autocomplete
,而原始属性名称中的
auto
complete
之间没有连字符?

React API参考提供了一些有关这方面的信息。至少,它说:

在React中,所有DOM属性和属性(包括事件处理程序)都应该是camelCased。例如,HTML属性
tabindex
对应于React中的属性
tabindex
。例外情况是
aria-*
data-*
属性,它们应该是小写的。例如,您可以将
aria标签
保留为
aria标签

本节给出了
autoComplete
autoFocus
作为预期名称

现在,这并没有真正回答为什么
aria-*
属性保持小写,但至少它清楚地说明了它们应该如何使用

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