我看到 React 16 允许将属性传递到 DOM。那么,这意味着可以使用“class”来代替 className,对吗?
我只是想知道除了向后兼容以前版本的 React 之外,仍然使用 className 是否还有其他优点。
最佳答案
class
是javascript中的关键字,JSX是javascript的扩展。这就是 React 使用 className
而不是 class
的主要原因。
这方面没有任何改变。
进一步扩展一下。 关键字意味着标记在语言语法中具有特殊含义。例如:
class MyClass extends React.Class {
Token class
表示下一个标记是标识符,后面是类声明。请参阅Javascript Keywords + Reserved Words .
标记是关键字这一事实意味着我们不能在某些表达式中使用它,例如
// invalid in older versions on Javascript, valid in modern javascript
const props = {
class: 'css class'
}
// valid in all versions of Javascript
const props = {
'class': 'css class'
};
// invalid!
var class = 'css';
// valid
var clazz = 'css';
// valid
props.class = 'css';
// valid
props['class'] = 'css';
问题之一是没有人知道将来是否不会出现其他问题。每种编程语言仍在不断发展,class
实际上可以在一些新的冲突语法中使用。
className
不存在此类问题。
关于reactjs - React 16 中的类与类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46989454/