【问题标题】:"class" Attribute Works in JSX: How?“class”属性在 JSX 中工作:如何?
【发布时间】: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


【解决方案1】:

此更改发生在React@16。 您也可以使用class,但并非在所有情况下:https://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html#changes-in-detail

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 2018-05-10
    • 2012-03-26
    • 2021-12-27
    相关资源
    最近更新 更多