警告:未知的 DOM 属性类。你是说 className 吗?

IT技术 javascript reactjs react-jsx
2021-05-19 07:17:35

我刚刚开始探索 React,通过添加一个具有简单渲染功能的组件:

render() {
  return <div class="myApp"></div>
}

当我运行该应用程序时,出现以下错误:

Warning: Unknown DOM property class. Did you mean className?

我可以通过更改classclassName.

问题是; React 是否强制执行此约定?另外为什么我需要使用className而不是传统的class如果这是一个限制,那么是由于 JSX 语法还是其他原因?

4个回答

是的,这是一个 React 约定:

由于 JSX 是 JavaScript,不鼓励将诸如class和 之for类的标识符用作 XML 属性名称。相反,阵营DOM组件期望像DOM属性名称classNamehtmlFor分别。

JSX 深入

在 React.js 中没有 for 和 class 属性可用,所以我们需要使用

for   --> htmlFor
class --> className

Meteor 使用 babel 将 ES5 转译为 ES6(ES2015),因此我们可以将它作为一个普通的 Node 应用程序来处理,并添加了 babel 转译器。

您需要将.babelrc文件添加到您项目的根文件夹中,并添加以下项目

{
  "plugins": [
    "react-html-attrs"
  ]
}

当然,您需要使用npm以下命令安装此插件

npm install --save-dev babel-plugin-react-html-attrs

在 HTML 中,我们使用

class="navbar"

但是在 React 和 ReactNative 中没有 HTML,我们在这里使用 JSX(Javascript XML)

className="navbar"