reactjs - React 16 中的类与类名

标签 reactjs

我看到 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/

相关文章:

javascript - useState 与 React 中的异步操作冲突

html - 如何使用 css、html 绘制多条对 Angular 线 [right hash lines]?

reactjs - 基于 React 的 SPA 中的 SEO

javascript - React-router-dom 页面不会切换?

javascript - React.js - 可观察状态,如 Ember.js 中的可观察状态

javascript - ReactJS 错误 : "Expected an assignment or function call and instead saw an expression"

javascript - 第二个值在 redux/react 中以未定义的形式返回

javascript - 为什么 event.target.value 被 chop 了?

java - Spring框架HttpMessageNotReadableException : Required request body is missing

javascript - 在 CreateElement 中定义并调用方法