菜单
×
   ❮     
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

if 语句写在 JSX 代码之外

示例

如果 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 必须用花括号 {} 包围。



×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持