【react从入门到精通】React JSX详解

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
云消息队列RocketMQ,TPS总和2000次/秒
简介: React JSX是一种在React中使用的JavaScript扩展语法,它允许我们使用类似HTML的语法来创建React元素和组件。使用JSX可以更方便地编写React应用程序,并使代码更易于阅读和理解。
+关注继续查看

前言

image.png

在上一篇文章《React生命周期》中我们了解了React的生命周期,深入分析了React每个生命周期的意义。了解了利用生命周期中的函数能够帮助我们实现什么样的功能以及为什么要这么做。有了以上的只是基础我们对React的理解又更近一步。更够写出更加健壮完善的代码。

本文中我们将详细了解React中的JSX,以及需要注意的一些语法规则。

React技能树

React 技能树
├── JSX
│   ├── 语法
│   ├── 元素渲染
│   ├── 组件
│   ├── Props
│   ├── State
│   └── 生命周期
├── 组件通信
│   ├── 父子组件通信
│   ├── 兄弟组件通信
│   ├── 跨级组件通信
│   ├── Context
│   └── Redux
├── 样式
│   ├── 内联样式
│   ├── CSS Modules
│   └── Styled Components
├── 路由
│   ├── React Router
│   ├── 动态路由
│   └── 嵌套路由
├── 数据请求
│   ├── Axios
│   ├── Fetch
│   └── GraphQL
├── 状态管理
│   ├── Redux
│   ├── MobX
│   └── Recoil
├── 常用库和框架
│   ├── Ant Design
│   ├── Material UI
│   ├── Bootstrap
│   ├── Semantic UI
│   └── Tailwind CSS
├── 测试
│   ├── Jest
│   ├── Enzyme
│   └── React Testing Library
├── 构建工具
│   ├── Webpack
│   └── Parcel
└── 服务端渲染
    ├── Next.js
    └── Gatsby

什么是JSX

JSX是一种语法扩展,它将HTML和JavaScript代码结合起来,使得我们能够在JavaScript代码中编写类似HTML的标记。在React中,我们可以使用JSX来描述组件的结构和样式,它提供了一种简洁、清晰的方式来表达我们的意图。

在React中,JSX被编译为普通的JavaScript函数调用,所以我们可以在JavaScript中使用它。具体来说,JSX被编译为React.createElement函数的调用,该函数接受三个参数:要创建的元素类型、元素的属性和子元素。

下面是一个简单的JSX示例:

const element = <h1>Hello, world!</h1>;

在这个例子中,我们定义了一个名为element的变量,它的值是一个JSX元素,代表一个h1标签,包含文本"Hello, world!"。下面是相应的JavaScript代码:

const element = React.createElement(
  'h1',
  null,
  'Hello, world!'
);

在这个例子中,我们使用React.createElement函数创建了一个名为element的变量,它的值与JSX示例的值相同。第一个参数是元素类型,这里是'h1'字符串;第二个参数是元素的属性,这里是null;第三个参数是子元素,这里是字符串'Hello, world!'。

JSX的基本语法规则

1.JSX必须有一个顶层元素

在JSX中,我们必须将所有的标签包裹在一个顶层元素中。如果有多个顶层元素,我们需要使用一个容器元素将它们包裹起来。例如:

const element = (
  <div>
    <h1>Hello, world!</h1>
    <p>Welcome to my website.</p>
  </div>
);

在这个例子中,我们将h1和p标签包裹在一个div标签中,以便它们成为顶层元素。

2.JSX标签必须有一个结束标记,或者是自闭合的

在JSX中,所有的标签都必须有一个结束标记,或者是自闭合的。例如:

// 有结束标记的标签
<h1>Hello, world!</h1>

// 自闭合的标签
<img src="image.jpg" alt="example" />

3.JSX中可以使用JavaScript表达式

在JSX中,我们可以在标记中使用JavaScript表达式,用花括号{}包裹。例如:

const name = 'React';
const element = <h1>Hello, {
   name}!</h1>;

在这个例子中,我们定义了一个名为name的变量,它的值是字符串'React'。我们在h1标签中使用了一个JavaScript表达式{name},它将被替换为变量name的值。

4.JSX中的样式和HTML中的样式有所不同

在HTML中,我们可以直接在元素上使用style属性,并在属性值中使用CSS语法来描述样式,例如:

<div style="color: red; font-size: 24px;">Hello, world!</div>

而在JSX中,我们也可以使用style属性来指定元素的样式,但是属性值必须使用JavaScript对象来表示。例如:

const style = {
   
  color: 'red',
  fontSize: '24px',
};
const element = <div style={
   style}>Hello, world!</div>;

可以看到,我们首先定义了一个名为style的JavaScript对象,它包含了color和fontSize两个属性,并分别指定了它们的值为'red'和'24px'。然后,我们在JSX中使用style属性,并将style对象作为属性值传递给div元素。

需要注意的是,JSX中的style属性与HTML中的style属性语法有所不同,我们必须使用JavaScript对象来表示样式,并使用驼峰式命名法来表示CSS属性名。例如,CSS中的属性background-color在JavaScript对象中表示为backgroundColor。

5.JSX中的class属性必须写成className

在JSX中,我们使用className属性来指定元素的class,而不是使用HTML中的class属性。例如:

const element = <div className="container">Hello, world!</div>;

在这个例子中,我们使用了className属性来指定div元素的class为'container'。

6.JSX中的style属性必须使用对象来表示

在JSX中,我们使用style属性来指定元素的样式,而不是使用HTML中的style属性。但是,与HTML中不同的是,在JSX中,我们需要使用一个JavaScript对象来表示样式。例如:

const style = {
   
  color: 'red',
  fontSize: '24px',
};
const element = <div style={
   style}>Hello, world!</div>;

在这个例子中,我们定义了一个名为style的变量,它的值是一个包含color和fontSize属性的对象。我们使用style属性来指定div元素的样式为这个对象。

JSX中的注释与HTML中的注释有所不同。
在JSX中,我们使用花括号和注释符号/ /来表示注释,而不是使用HTML中的。例如:

const element = (
  <div>
    {
   /* 这是一个注释 */}
    <h1>Hello, world!</h1>
  </div>
);

在这个例子中,我们在JSX中使用注释符号/ /来表示注释,它们将被编译为JavaScript中的注释。

总结

在React中,JSX提供了一种简洁、清晰的方式来描述组件的结构和样式。它结合了HTML和JavaScript代码,使得我们能够在JavaScript代码中编写类似HTML的标记。

在使用JSX时,需要注意一些语法规则,例如必须有一个顶层元素、标签必须有结束标记或自闭合、样式必须使用对象来表示等。掌握JSX的使用方法对于开发React应用非常重要。


✍创作不易,求关注😄,点赞👍,收藏⭐️

相关文章
|
3天前
|
前端开发 JavaScript
【React学习】—jsx语法规则(三)
【React学习】—jsx语法规则(三)
|
6天前
|
前端开发 CDN
在单html页面中使用react并配置jsx
在单html页面中使用react并配置jsx
15 0
|
3月前
|
存储 前端开发 JavaScript
【react从入门到精通】React兄弟组件通信方式详解(有示例)
在上一篇文章《[React父子组件通信方式详解]》中我们学习到了React父子组件通信的4中方式。本文中我们将详细了解react兄弟组件通信方式。
|
3月前
|
存储 前端开发
【react从入门到精通】React父子组件通信方式详解(有示例)
在React中,父子组件最常用的4种通信方式: - 通过 props 实现父子组件通信 - 通过 state 实现父子组件通信 - 通过回调函数实现父子组件通信 - 使用 React Context 实现组件通信 在项目实战过程中,可根据实际情况选择最合适的通信方式。
106 0
【react从入门到精通】React父子组件通信方式详解(有示例)
|
3月前
|
前端开发 JavaScript 开发者
【react从入门到精通】深入理解React生命周期
在上一篇文章《react入门这一篇就够了》中我们已经掌握了React的基本知识。通过使用React组件我们对页面进行渲染;通过使用React事件处理函数对用户操作进行响应;通过React状态的改变对页面进行刷新。本文中我们将深入的了解React的生命周期,以及在这些生命周期可以做些什么。
|
3月前
|
存储 资源调度 前端开发
【react从入门到精通】初识React
当今Web开发中,React已经成为最流行的JavaScript库之一,被广泛应用于构建现代、高效、可维护的用户界面。本文将带您从零开始,介绍React的基本概念和使用方法,包括组件、状态管理、事件处理、组合和嵌套组件等。无论您是刚刚入门前端开发,还是想深入了解React的高级特性,本文都将为您提供简洁明了的指导,帮助您轻松掌握React,并在您的Web应用中充分发挥其强大的潜力!
|
3月前
|
存储 前端开发 JavaScript
React | React的JSX语法(二)
React | React的JSX语法(二)
React | React的JSX语法(二)
|
3月前
|
XML 前端开发 JavaScript
React | React的JSX语法(一)
React | React的JSX语法 React | React的JSX语法(一)
|
4月前
|
XML 前端开发 JavaScript
说说react 中jsx语法糖的本质?
React 使用 JSX 来替代常规的JavaScript。 JSX 是按照 XML 语法规范 的 JavaScript 语法扩展。 JSX 语法的本质:并不是直接把 JSX 渲染到页面上,而是内部先转换成了 createElement 形式,再渲染的。
|
4月前
|
前端开发
前端学习笔记202307学习笔记第五十九天-react源码-Jsx转换为ReactElement的过程1
前端学习笔记202307学习笔记第五十九天-react源码-Jsx转换为ReactElement的过程1
24 0
相关产品
云消息队列 MQ
微服务引擎
函数计算
推荐文章
更多