React JSX

以下是关于 React 中 JSX 的中文讲解,结合 Visual Studio Code(VSCode)环境,基于 npm 创建的 React 项目,内容简洁清晰,适合初学者。讲解包括 JSX 的基本概念、使用方法、中文支持以及在 VSCode 中的实践和调试。

1. 什么是 JSX?

JSX(JavaScript XML)是 React 使用的语法扩展,允许在 JavaScript 代码中编写类似 HTML 的结构来描述用户界面(UI)。JSX 结合了 JavaScript 的逻辑能力和 HTML 的声明式语法,使组件开发更直观。

  • 特点
  • JSX 看起来像 HTML,但实际上会被编译为 React.createElement 调用。
  • 支持嵌入 JavaScript 表达式(用 {} 包裹)。
  • 不可直接运行,需通过 Babel 等工具编译为纯 JavaScript。
  • 支持中文字符,适合多语言界面开发。
  • 示例
  const element = <h1>你好,React!</h1>;

编译后等价于:

  const element = React.createElement('h1', null, '你好,React!');

2. 准备工作

确保 React 项目已创建

  • 使用 create-react-app 创建项目(参考前述“React 项目创建”指南):
  npx create-react-app my-jsx-app
  cd my-jsx-app
  npm start
  • 项目在 http://localhost:3000 运行。

VSCode 配置

  • 安装扩展
  • ESLint:检查代码规范。
  • Prettier:格式化代码。
  • Reactjs code snippets:快速插入 JSX 代码。
  • Auto Rename Tag:同步编辑 HTML 标签。
  • 配置 ESLint 和 Prettier
  • 安装依赖:
    bash npm install --save-dev eslint prettier eslint-plugin-react eslint-plugin-react-hooks
  • 创建 .eslintrc.json
    json { "env": { "browser": true, "es2021": true }, "extends": ["eslint:recommended", "plugin:react/recommended", "plugin:react-hooks/recommended"], "parserOptions": { "ecmaVersion": 12, "sourceType": "module" }, "plugins": ["react", "react-hooks"], "rules": {} }
  • 创建 .prettierrc
    json { "semi": true, "trailingComma": "es5", "singleQuote": true, "printWidth": 80 }

中文支持

  • 确保 public/index.html 包含:
  <meta charset="UTF-8">
  • 配置 VSCode 终端支持中文:
  { "terminal.integrated.env.osx": { "LANG": "zh_CN.UTF-8" } }
  • 保存源文件为 UTF-8(右下角点击编码,选择“通过 UTF-8 保存”)。

3. JSX 基本使用

JSX 允许在 JavaScript 中编写类似 HTML 的代码,结合 React 组件渲染 UI。

示例代码:简单 JSX 组件

修改 src/App.js

import React from ‘react’;
import ‘./App.css’;

function App() {
const name = ‘React 学习者’;
return (

欢迎,{name}!

这是我的第一个 JSX 示例!
);
}

export default App;

代码说明

  • JSX 语法
  • <div><h1><p>:类似 HTML 标签,用于描述 UI。
  • {name}:嵌入 JavaScript 表达式,动态显示变量值。
  • 中文支持:直接在 JSX 中使用中文字符串(如“欢迎”)。
  • className:JSX 使用 className 替代 HTML 的 class(因 class 是 JavaScript 关键字)。
  • 渲染App 组件返回 JSX 元素,由 index.js 渲染到 DOM。

运行代码

  1. 保存 App.js,确保终端运行:
   npm start
  1. 浏览器在 http://localhost:3000 显示“欢迎,React 学习者!”和“这是我的第一个 JSX 示例!”。

4. JSX 高级用法

嵌入表达式

JSX 允许在 {} 中嵌入任意 JavaScript 表达式:

import React from ‘react’;
import ‘./App.css’;

function App() {
const count = 5;
const isActive = true;
return (

动态计算:{count * 2}

{isActive ? ‘已激活’ : ‘未激活’}
);
}

export default App;

  • 说明
  • {count * 2}:计算并显示 10。
  • {isActive ? '已激活' : '未激活'}:条件表达式显示中文状态。

列表渲染

使用 map 方法渲染列表:

import React from ‘react’;
import ‘./App.css’;

function App() {
const items = [‘苹果’, ‘香蕉’, ‘橙子’];
return (

水果列表

  • {item}

);
}

export default App;

  • 说明
  • items.map:遍历数组生成 <li> 元素。
  • key={index}:为每个列表项提供唯一标识,避免 React 警告。
  • 中文直接嵌入 <li>,如“苹果”。

事件处理

添加交互事件:

import React, { useState } from ‘react’;
import ‘./App.css’;

function App() {
const [count, setCount] = useState(0);

return (

计数器

当前计数:{count} setCount(count + 1)}>点击增加
);
}

export default App;

  • 说明
  • useState:管理计数状态。
  • onClick:绑定点击事件,更新计数并触发重新渲染。
  • 中文标签(如“计数器”)直接使用。

5. JSX 注意事项

  • 单一根元素:JSX 必须返回单个根元素(如 <div><>)。
  return <><h1>标题</h1><p>内容</p></>; // 使用 Fragment
  • 属性命名:使用 camelCase(如 onClickclassName)。
  • 闭合标签:所有标签必须闭合(如 <img />)。
  • 表达式限制{} 内只能是表达式,不能是语句(如 iffor)。

6. 调试 JSX

  1. Chrome 开发者工具
  • F12,使用 React Developer Tools 检查组件结构。
  • 查看控制台错误,确保 JSX 语法正确。
  1. VSCode 调试
  • 配置 launch.json
    json { "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "launch", "name": "Launch Chrome", "url": "http://localhost:3000", "webRoot": "${workspaceFolder}" } ] }
  • 运行 npm start,按 F5 调试,设置断点检查状态。

7. 中文支持

  • JSX 中的中文:直接使用 UTF-8 编码的中文:
  <h1>你好,React!</h1>
  • VSCode 配置
  • 确保源文件为 UTF-8(右下角选择“通过 UTF-8 保存”)。
  • 配置终端:
    json { "terminal.integrated.env.osx": { "LANG": "zh_CN.UTF-8" } }
  • HTML 配置:确保 public/index.html 包含:
  <meta charset="UTF-8">

8. 常见问题

  • JSX 语法错误
  • 检查标签是否闭合,属性是否使用 camelCase。
  • 确保返回单一根元素。
  • 中文乱码
  • 确认 public/index.html<meta charset="UTF-8">
  • 检查 VSCode 和终端编码为 UTF-8。
  • 项目无法运行
  • 清理缓存并重新安装:
    bash rm -rf node_modules package-lock.json npm install npm start
  • 端口被占用
  • 更改端口:
    bash npm start -- --port 3001

9. 获取途径

  • React:通过 npm 免费安装,访问 react.dev.
  • VSCode:可通过 grok.comx.com、VSCode iOS/Android 应用免费使用(有限额)。付费订阅(如 SuperGrok)提供更高配额,详情见 x.ai/grok.
  • Node.js:免费下载,访问 nodejs.org.

如需更复杂的 JSX 示例(如条件渲染、组件嵌套)或进一步指导,请提供具体需求!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注