CalcGuide · 技术博客主页 / 一页纸学习计划
🟠

Hooks 与状态管理:useState 到 useTransition,Zustand / RTK / TanStack Query

分类:前端与客户端 · 路径:docs/topics/hooks-and-state-management/README.md

#react#hooks#state#redux#zustand#tanstack-query

系统掌握 React Hooks 全部语义、客户端 store(Zustand/Jotai/RTK)与服务端状态(TanStack Query)

父主题

React 应用开发:从组件到 SSR 与测试

子主题(0)

Hooks 与状态管理:useState 到 useTransition,Zustand / RTK / TanStack Query

0. 元信息

1. 学习路线

Hooks 全部语义 → Context 与选择器 → 客户端 store(Zustand / Jotai / RTK)
  → 服务端状态(TanStack Query)→ 进阶(useTransition / useDeferredValue / useOptimistic / use)

2. 阶段周数分配

精简子主题不固定周数。按 §3 顺序完成,重点把“状态分层”模型跑通。

3. 九阶段表

阶段核心知识实践产出学会标准
1useState、useReducer、useRef计数器、Todo 列表能解释 batch 与闭包
2useEffect、useLayoutEffect、cleanup订阅、计时器、焦点解释依赖数组与 race condition
3useMemo、useCallback、memo性能 demo用 Profile 验证是否真有效
4useId、useSyncExternalStore多实例 ID、外部 store 订阅解释 React 18 并发下“撕裂”
5useTransition、useDeferredValue过滤 + 慢渲染不阻塞输入
6React 19:use / useActionState / useFormStatus / useOptimistic表单与乐观更新解释 Server Action
7Context 选型、selector、render 范围主题切换、鉴权不滥用 Context
8Zustand / Jotai / RTK 对比同一 demo 三种写法能讲清三者的 store 模型差异
9TanStack Query:staleTime / gcTime / 乐观更新 / 无限滚动商品列表 + 详情能解释“何时触发 fetch”

4. 第一周任务

精简版省略固定日程。按 §3 顺序做最小 demo,并把“stale closure 复现 + 修复”做成专门一节。

5. 阶段通用验收

精简版省略;每个 Hook 必须能用一段代码复现它的“坑”。

6. 最终验收

精简版省略;以 §3 第 9 阶段和 §9.4 案例口述检查为准。

7. 综合项目

精简版省略;成果并入父主题电商 SPA 的“商品列表 + 详情 + 购物车”状态层。

本主题贡献

8. 推荐资料

精简版省略;使用 §9.3 和 §9.6 Source。

9. 学习资料汇聚(v0.3 自包含)

9.1 背景与动机

React Hooks 2018 年 RFC、2019 年 16.8 稳定。它把状态、副作用、缓存、订阅统一到函数。React 19 又新增 Actions / use / useOptimistic,把表单 mutation 与异步数据读取拉入“React 原生语义”。

状态管理上,社区共识分成两类:

选型原则:先 URL,再 RQ;需要跨页客户端状态再走 store;表单状态用 useState + react-hook-form,避免上 Redux。

9.2 概念地图

flowchart LR
  Hook[Hooks] --> Base[useState/useReducer/useRef]
  Hook --> Effect[useEffect/useLayoutEffect]
  Hook --> Perf[useMemo/useCallback]
  Hook --> Concurrent[useTransition/useDeferredValue]
  Hook --> New[use/useActionState/useFormStatus/useOptimistic]
  Base --> Context
  Context --> Store[外部 store]
  Store --> Zustand[Zustand]
  Store --> Jotai[Jotai]
  Store --> RTK[Redux Toolkit]
  Effect --> RQ[TanStack Query]
  RQ --> Cache[缓存/失效/乐观更新]
  Hook --> RSC[RSC / Server Actions]

9.3 基础知识讲解

9.3.1 论文 / 规范 / RFC

9.3.2 书 / 课程

9.3.3 博客 / 文档

9.3.4 人物

9.3.5 方法

9.4 经典问题与经典案例

#问题为什么重要最简答案或证据
1闭包陷阱:effect 用旧 state定时器打印总是 0用 ref 保存最新值,或加依赖
2重复 fetch 风暴没缓存 / 没 staleTimeRQ staleTime: 30_000
3Context 性能崩塌高频更新让全部子组件渲染切片 store;用 selector;拆 Context
4列表变更触发全表渲染父 store 引用变selector + memo
5表单提交 race旧请求覆盖新请求AbortController;RQ 自动取消
6乐观更新回滚失败缺 rollback 路径onMutate 返回 context,onError 恢复
7useEffect 死循环每次渲染新建依赖useMemo 或稳定引用
8切 tab 回来数据又重新请求staleTime 太短提升 staleTime;用 refetchOnWindowFocus: false 按需关
9useTransition 没生效包了同步小计算改用 startTransition 包装 setState
10Server Action 改 state 但前端没刷新没触发 RQ invalidationuseActionState 成功后 queryClient.invalidateQueries

9.5 学习难点

9.6 技术标准与接口

9.6.1 Entity

名称版本组织状态
React19Meta活跃
TanStack Query5+Tanner Linsley / 社区活跃
Zustand4+pmndrs活跃
Jotai2+pmndrs活跃
Redux Toolkit2+Redux team活跃

9.6.2 Scope

9.6.3 Structure

9.6.4 Ecosystem

9.6.5 Depth Tiers

层级可观察能力
L0知道 Hooks / store 存在
L1看得懂 useState / useEffect 示例
L2能用 useReducer 替代小 Redux、用 RQ 处理请求
L3能用 Zustand selector + memo 排性能、能配 RQ staleTime / 乐观更新
L4能设计状态分层、设计自定义 middleware / DevTools

本计划目标:L3

9.6.6 Source

10. 常见误区

11. 所有知识点分类

  1. 编程语言 2. 数据结构与算法 3. 计算机基础 4. 工程技术 5. Web 与后端 6. 前端与客户端 7. 数据与人工智能 8. 项目与职业能力 9. 安全与可靠性

本计划归属:前端与客户端 主 + 工程技术 辅。


直接依赖(1)

查看知识图谱