中级第 9 / 17 节40 分钟 · 实操
数据获取
React 课程的一部分
真实的应用几乎没有哪个能只靠用户屏幕上已有的数据活下去。总有那么一刻,某个组件需要向服务器要点东西:一份用户列表、某个商品的详情、一页搜索结果。在答案回来之前,有一段时间组件手里什么都没有,而且答案完全有可能因为网络出问题而永远回不来。一个只会渲染“数据”的组件,碰上这两种再平常不过的情况中的任何一种都会垮掉。在 React 里把数据获取做对,意味着诚实地面对一个请求可能处在的全部三种状态,而不只是顺利的那一种,同时还要为那些没能跑完的请求认真收尾。
调用服务器是一次副作用,它伸到了“根据当前的属性和状态算出这个组件的 JSX”这件事之外,和启动定时器、打开一个连接属于同一类。如果你直接在组件主体里调用 fetch,那么每一次渲染它都会触发一遍,包括那些起因跟“需要新数据”毫不相干的渲染;而每一次这样的调用最后又都会去更新状态,于是又引发一次渲染,再引发一次获取。useEffect 正是打断这个循环的东西:它让你可以说“这个调用只做一次,就在组件第一次出现之后”,或者“只有某个特定的值变了才再做一次”,用法和你拿它启动一个时钟、订阅一个窗口事件时一模一样。
你将学到什么
- Fetch inside useEffect
- Loading/error/data states
- AbortController cleanup
- Preventing setState after unmount
- Mention TanStack Query as a next step
用你的语言阅读本课
本课程的所有课时
17 节- 1什么是 React?25 分钟
- 2JSX 与组件 (Components)30 分钟
- 3属性 (Props)30 分钟
- 4使用 useState 管理状态 (State)35 分钟
- 5处理事件30 分钟
- 6条件渲染与列表30 分钟
- 7表单与受控输入 (Controlled Inputs)35 分钟
- 8使用 useEffect 实现副作用 (Effects)40 分钟
- 9数据获取40 分钟
- 10组件组合 (Component Composition)35 分钟
- 11Context 与 useContext35 分钟
- 12useReducer35 分钟
- 13自定义钩子 (Hooks)35 分钟
- 14性能与记忆化 (Memoization)35 分钟
- 15使用 React Router 进行路由40 分钟
- 16测试 React 组件 (Components)40 分钟
- 17顶点项目:待办事项应用60 分钟
探索其他课程
Python
19 节 · 9.3小时
Go
20 节 · 12.3小时
Linux
17 节 · 8.5小时
Docker
13 节 · 6.6小时
Git
13 节 · 5.9小时
Kubernetes
14 节 · 8小时
Ansible
12 节 · 6.1小时
Bash
12 节 · 5.7小时
Helm
10 节 · 5.4小时
GitLab CI
11 节 · 5.8小时
Jenkins
11 节 · 5.3小时
PostgreSQL
14 节 · 7.6小时
MySQL
13 节 · 6.8小时
Web
14 节 · 5.9小时
TypeScript
18 节 · 7.7小时
Vibe Coding
12 节 · 5.8小时
Prompt Engineering
11 节 · 6.2小时
Vibe 编程:基础
12 节 · 4.5小时
Vibe 编程:从原型到生产
12 节 · 5.5小时
Vibe 编程:多智能体工程
12 节 · 5.3小时
Vibe 编程:高级工程
12 节 · 7.3小时
