Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • JSX的基本语法

JSX的基本语法

JSX(JavaScript XML)是React的核心概念之一,它允许你在JavaScript代码中直接编写类似HTML的结构。JSX使得定义组件的UI更加直观和简洁。虽然JSX看起来像是HTML,但它实际上是JavaScript的语法扩展,最终会被编译成React.createElement调用。

1. JSX语法规则

1.1 JSX是JavaScript表达式

JSX并不是一个字符串,而是JavaScript表达式。你可以在JSX中嵌入任何合法的JavaScript表达式,使用大括号{}来包裹。

示例:

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

1.2 使用小写字母和大写字母区分HTML标签和React组件

HTML标签:使用小写字母,如<div>, <h1>, <button>等。 React组件:使用大写字母开头的命名,如。React会将大写字母的标签视为组件。 示例:

const element = <div>Some content</div>;   // HTML标签
const element2 = <MyComponent />;           // React组件

1.3 自闭合标签

JSX中的标签可以是自闭合的,即不需要闭合标签。例如<img />,<input />等。

示例:

const element = <img src="image.jpg" alt="example" />;

1.4 属性的使用

JSX中的属性类似于HTML的属性,但使用camelCase(驼峰命名法)来命名。例如,HTML的class变成了className,for变成了htmlFor。

示例:

const element = <button className="btn">Click me</button>;

1.5 JavaScript表达式的插入

在JSX中,你可以通过大括号{}来嵌入JavaScript表达式(如变量、函数调用等)。需要注意的是,JSX只能插入表达式,不能插入语句。

示例:

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

1.6 条件渲染

你可以在JSX中使用JavaScript表达式来进行条件渲染。例如使用三元运算符来根据条件动态渲染内容。

示例:

const isLoggedIn = true;
const greeting = <h1>{isLoggedIn ? 'Welcome!' : 'Please log in'}</h1>;

1.7 列表渲染

通过数组的map()方法,可以渲染列表。每个子元素都需要一个唯一的key属性,以帮助React高效更新和渲染元素。

示例:

const items = ['Apple', 'Banana', 'Cherry'];
const list = (
  <ul>
    {items.map(item => <li key={item}>{item}</li>)}
  </ul>
);

1.8 事件处理

JSX中事件的命名遵循camelCase(驼峰命名法)。例如,HTML的onclick变成了onClick,onsubmit变成了onSubmit。

示例:

function handleClick() {
  alert('Button clicked!');
}

const element = <button onClick={handleClick}>Click me</button>;

1.9 注释

JSX中的注释与JavaScript中的注释略有不同,必须放在大括号内。

示例:

const element = (
  <div>
    {/* This is a comment */}
    <h1>Hello, world!</h1>
  </div>
);

2. JSX最终转化为React.createElement

JSX代码并不会直接在浏览器中运行。它需要通过Babel等工具进行编译,最终转换成React.createElement语法。以下是JSX与React.createElement的转换过程:

JSX:

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

编译后:

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

3. 小结

JSX是React中不可或缺的部分,它提供了一种声明式的方式来描述UI。通过嵌入JavaScript表达式,React组件可以根据数据动态渲染。理解和掌握JSX的语法是开发React应用的基础。

Last Updated:: 12/4/24, 11:18 AM