【发布时间】:2018-12-05 18:25:51
【问题描述】:
我有一个学生提交了包含许多class(不是className)属性的代码。例如:
import React, { Component } from "react";
class Images extends Component {
render() {
return (
<div class="gallery">
<div class="zoom"><img src="foo.jpg" alt="Foo"/></div>
<div class="zoom"><img src="bar.jpg" alt="Bar"/></div>
</div>
);
}
但不知何故,他的代码可以工作,并生成实际的 HTML class 属性。我什至尝试删除一行,以确保代码确实被使用,但果然相应的行在输出中被删除了。
我不明白这是如何工作的。该学生使用create-react-app,它使用react-scripts 库来编译/运行该站点,但我找不到任何将class 转换为className 的提及:
https://facebook.github.io/create-react-app/
https://github.com/facebook/create-react-app/tree/master/packages/react-scripts
谁能解释一下这个巫术? ;)
附:相关库版本:
"jsx": "^0.9.89",
"react": "^16.6.3",
"react-dom": "^16.6.3",
"@babel/preset-react": "^7.0.0",
【问题讨论】:
-
看起来这可能是 React 16 的一个特性 stackoverflow.com/questions/46989454/…
-
那里的最佳答案是“在这方面没有任何改变。”那里有一个(投票率较低的)答案指向一个建议支持
class的错误,但如果你关注它的相关公关,你会看到丹·阿布拉莫夫说他因为浏览器问题改变了主意,而事实并非如此将要发生。在发帖之前,我尝试先做功课并搜索 SO :) -
此更改发生在
React@16。您也可以使用class,但并非在所有情况下:reactjs.org/blog/2017/09/08/… -
谢谢@bamse;如果您想以答案的形式提出,我很乐意接受。
-
干杯!你有一个学生在
React@16出来后开始学习:)
标签: reactjs jsx create-react-app