React 基础
React 是用于构建用户界面的 JavaScript 库(UI 库),由 Meta 维护。当前文档以 React 18+ 为主线(createRoot、并发特性、Hooks)。前置:JavaScript 基础、HTML、CSS。
可与 Vue 基础 对照学习:二者都组件化,但 React 以 函数组件 + Hooks 为默认写法,更新由 setState 触发重新渲染。
React 是什么、不是什么
| 说明 | |
|---|---|
| 是 | 用组件描述 UI;用状态驱动界面更新;可与任意后端、路由、状态库组合 |
| 不是 | 完整框架(路由、数据获取需选配库);模板语言(使用 JSX 或 createElement) |
应用入口(React 18+)
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import App from "./App";
const root = createRoot(document.getElementById("root")!);
root.render(
<StrictMode>
<App />
</StrictMode>,
);
createRoot:React 18 起推荐 API;替代已弃用的ReactDOM.render。StrictMode:开发模式下帮助发现不安全生命周期、过时的 API 等;会故意双重调用部分函数(如部分 Effect)以暴露副作用问题,仅开发环境,不影响生产构建行为(见 官方 StrictMode)。
函数组件
import { useState } from "react";
type CounterProps = {
initial?: number;
};
export function Counter({ initial = 0 }: CounterProps) {
const [count, setCount] = useState(initial);
return (
<button type="button" onClick={() => setCount((c) => c + 1)}>
{count}
</button>
);
}
类组件仍受支持,但新项目应使用函数组件 + Hooks(见 Hooks)。
核心概念速览
| 概念 | 说明 |
|---|---|
| 组件 | 可复用的 UI 单元;Props 只读,由父传入 |
| State | 组件内部可变数据;更新须用 setState / dispatch,触发重新渲染 |
| 单向数据流 | 数据自父向子通过 props 流动;子通过回调通知父 |
| 虚拟 DOM | React 在内存中计算 UI 树,再与真实 DOM 协调(见 渲染) |
| Hooks | 在函数组件中使用 state、副作用、Context 等的 API |
常用生态(选配)
| 库 | 用途 |
|---|---|
| React Router | 客户端路由 |
| Redux Toolkit | 可预测的全局状态(复杂应用) |
| Zustand | 轻量全局状态 |
| TanStack Query | 服务端状态 / 请求缓存 |
| Vite | 开发与构建(@vitejs/plugin-react) |
| Next.js | React 全栈 / SSR 框架(可选) |
本目录学习路径
| 主题 | 文档 |
|---|---|
| 语法 | jsx |
| 组件 | components |
| Hooks | state → effect → context → memo |
| 全局状态 | state |
| 路由 | router |
| 渲染原理 | rendering |
| 性能 | performance/build、runtime |
| 工程 | project、typescript、test |
参考文献
以下链接在编写时均可正常访问:
| 资料 | 说明 |
|---|---|
| React 官方文档 | 中文 |
| React:安装 | 创建项目 |
| React:思维模型 | 组件拆分 |
相关文章
渲染与协调
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
1 / 16