JSX 与语法
JSX 是 JavaScript 的语法扩展,在代码中编写类似 HTML 的结构。编译后变为 React.createElement 调用。见 React 基础。
基本规则
const element = <h1 className="title">Hello</h1>;
| 规则 | 说明 |
|---|---|
| 必须有一个根节点 | 多个并列节点用 <>...</>(Fragment)或 <Fragment> 包裹 |
使用 className | 对应 HTML 的 class |
使用 htmlFor | 对应 for |
| 自闭合标签 | <img />、<input /> 等须闭合 |
| 驼峰属性 | onClick、tabIndex |
嵌入表达式
花括号内可写任意 JavaScript 表达式(非语句):
const name = "React";
const count = 3;
return (
<p>
{name} · {count > 0 ? "有数据" : "空"}
</p>
);
条件与列表
// 条件
{isLoggedIn ? <Dashboard /> : <Login />}
// 列表(必须稳定 key)
<ul>
{items.map((item) => (
<li key={item.id}>{item.title}</li>
))}
</ul>
key:应使用列表项稳定唯一 id,不要用随机数或数组下标(在重排、插入时会导致状态错乱),除非列表静态且不重排。
样式
// 内联对象
<div style={{ color: "red", marginTop: 8 }} />
// CSS 类
import styles from "./Card.module.css";
<div className={styles.card} />
与 HTML 的差异(常见)
- 事件:
onClick接收函数,不是字符串;合成事件(SyntheticEvent)封装浏览器事件。 dangerouslySetInnerHTML:仅用于已消毒的 HTML 字符串,否则有 XSS 风险(见 安全)。- 小写标签为内置 DOM 元素;大写开头为自定义组件。
TypeScript
.tsx 文件中可为 props 与事件标注类型;详见 TypeScript。
参考文献
以下链接在编写时均可正常访问:
| 资料 | 说明 |
|---|---|
| React:编写 JSX | 标记语法 |
| React:条件渲染 | 条件 |
| React:列表渲染 | key |
相关文章
渲染与协调
React 将组件渲染为虚拟 DOM 树,再协调(reconciliation)到浏览器 DOM。理解该过程有助于解释 key、memo 与性能优化。涵盖渲染流程、Fiber、startTransition、Suspense、最佳实践与常见坑。
工程化
新建 React 项目时,官方与社区主流工具为 Vite;全栈场景常用 Next.js。涵盖 Vite + React、Create React App 现状、Next.js、目录结构、环境变量、部署、最佳实践与常见坑。
TypeScript
React 官方推荐 TypeScript。类型主要落在 Props、事件、Ref 与 Hooks 返回值上。见 组件。
测试
React 组件测试推荐 React Testing Library(RTL):从用户可见行为断言,而非实现细节。运行器常用 Vitest 或 Jest。涵盖安装配置、查询优先级、异步测试、Mock 网络请求、最佳实践与常见坑。
构建与分包
通过代码分割与构建配置减小首屏 JavaScript 体积。涵盖 React.lazy/Suspense、路由级分割、Tree Shaking、Vite 生产构建、体积分析、最佳实践与常见坑。运行时优化见 runtime。
Effect 与副作用
useEffect 用于在组件渲染后执行与外部系统同步的逻辑(请求、订阅、手动改 DOM 等)。涵盖基本用法、依赖数组、适用/不适用场景、useLayoutEffect、最佳实践与常见坑。
Series
react
7 / 16