Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

React JSX


什么是 JSX?

JSX 代表 JavaScript XML。

JSX 允许我们在 React 中编写 HTML。

JSX 使得在 React 中编写和添加 HTML 变得更加容易。


编写 JSX 代码

JSX 允许我们在 JavaScript 中编写 HTML 元素并将它们放置在 DOM 中,而无需任何 createElement() 和/或 appendChild() 方法。

JSX 将 HTML 标签转换为 React 元素。

你不需要使用 JSX,但 JSX 使编写 React 应用程序变得更加容易。

以下有两个示例。第一个使用 JSX,第二个不使用。

示例 1

JSX

const myElement = <h1>I Love JSX!</h1>;

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(myElement);

运行示例 »

示例 2

不使用 JSX

const myElement = React.createElement('h1', {}, 'I do not use JSX!');

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(myElement);

运行示例 »

如你在第一个示例中所见,JSX 允许我们在 JavaScript 代码中直接编写 HTML。

JSX 是基于 ES6 的 JavaScript 语言扩展,在运行时转换为普通的 JavaScript。


w3schools CERTIFIED . 2022

获得认证!

完成 React 模块,完成练习,参加考试,并获得 w3schools 认证!!

95 美元 报名

JSX 中的表达式

使用 JSX,你可以在花括号 { } 内编写表达式。

表达式可以是 React 变量、属性或任何其他有效的 JavaScript 表达式。JSX 将执行表达式并返回结果。

示例

执行表达式 5 + 5

const myElement = <h1>React is {5 + 5} times better with JSX</h1>;

运行示例 »


插入大块 HTML 代码

要在多行上编写 HTML,请将 HTML 放入括号中。

示例

创建包含三个列表项的列表

const myElement = (
  <ul>
    <li>Apples</li>
    <li>Bananas</li>
    <li>Cherries</li>
  </ul>
);

运行示例 »


一个顶级元素

HTML 代码必须包装在 一个 顶级元素中。

因此,如果你想编写 两个 段落,你必须将它们放在一个父元素中,例如 div 元素。

示例

将两个段落包装在一个 DIV 元素中

const myElement = (
  <div>
    <p>I am a paragraph.</p>
    <p>I am a paragraph too.</p>
  </div>
);

运行示例 »

如果 HTML 不正确,或者 HTML 缺少父元素,JSX 将抛出错误。

或者,你可以使用“片段”来包装多行。这将防止不必要地向 DOM 添加额外的节点。

片段看起来像一个空 HTML 标签:<></>

示例

将两个段落包装在一个片段中

const myElement = (
  <>
    <p>I am a paragraph.</p>
    <p>I am a paragraph too.</p>
  </>
);

运行示例 »


元素必须关闭

JSX 遵循 XML 规则,因此 HTML 元素必须正确关闭。

示例

使用 /> 关闭空元素

const myElement = <input type="text" />;

运行示例 »

如果 HTML 未正确关闭,JSX 将抛出错误。


属性 class = className

属性 class 是 HTML 中经常使用的属性,但由于 JSX 呈现为 JavaScript,并且 class 关键字是 JavaScript 中的保留字,因此你不允许在 JSX 中使用它。

改用属性 className

JSX 通过使用 className 来解决这个问题。当 JSX 呈现时,它将 className 属性转换为 class 属性。

示例

在 JSX 中使用属性 className 而不是 class

const myElement = <h1 className="myclass">Hello World</h1>;

运行示例 »


条件 - if 语句

React 支持 if 语句,但不支持 JSX 内部

为了能够在 JSX 中使用条件语句,你应该将 if 语句放在 JSX 之外,或者可以使用三元表达式代替。

选项 1

在 JSX 代码之外编写 if 语句

示例

如果 x 小于 10,则编写“Hello”,否则编写“Goodbye”。

const x = 5;
let text = "Goodbye";
if (x < 10) {
  text = "Hello";
}

const myElement = <h1>{text}</h1>;

运行示例 »

选项 2

使用三元表达式代替

示例

如果 x 小于 10,则编写“Hello”,否则编写“Goodbye”。

const x = 5;

const myElement = <h1>{(x) < 10 ? "Hello" : "Goodbye"}</h1>;

运行示例 »

注意,为了在 JSX 中嵌入 JavaScript 表达式,JavaScript 必须用花括号 {} 包裹。



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.