CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
React 生态进阶/课时/客户端状态管理
RawBlame
课时目录12 节

React 生态进阶

  1. 01React 生态地图
  2. 02客户端状态管理
  3. 03服务端状态与 TanStack Query
  4. 04Axios 与数据获取
  5. 05GraphQL 客户端
  6. 06UI 组件库
  7. 07动画与 Framer Motion
  8. 08E2E 测试
  9. 09React Native 概览
  10. 10表单与校验
  11. 11生态层性能
  12. 12综合练习

客户端状态管理

Zustand、MobX 对比 Context。

35 分钟

客户端状态管理

组件内的 useState 管不了 跨路由、跨模块 的共享状态。react-context 能抬一层,但大应用里 Provider 嵌套与重渲染 会拖慢体验。本课对比 Context、Zustand、MobX 的适用边界。

学习目标

  • 区分本地 UI 状态与全局客户端状态
  • 理解 Zustand「小 store + 选择器」与 MobX「可观察对象」的差异
  • 知道何时不必引入第三方状态库

状态分类

类型示例推荐
本地 UI输入框、Modal 开关useState
跨组件共享主题、侧栏折叠Context 或 Zustand
服务器数据课程列表、用户资料TanStack Query(下节)
URL 状态筛选、分页React Router / Next.js searchParams

反模式:把 API 响应整包塞进 Zustand,却不用 Query 做缓存与失效——下节会专门讲服务端状态。

Context 何时够用

  • 树不深、更新不频繁(主题、locale)
  • 消费者少,或可用 useMemo 稳定 value

Context 痛点:任意 value 变化 → 所有 consumer 重渲染。拆多个 Context 或配合 useReducer 可缓解,但样板代码会涨。

Zustand

轻量 store,组件 按 selector 订阅 切片,避免无关更新。

import { create } from "zustand";

type UiStore = {
  sidebarOpen: boolean;
  toggleSidebar: () => void;
};

export const useUiStore = create<UiStore>((set) => ({
  sidebarOpen: true,
  toggleSidebar: () => set((s) => ({ sidebarOpen: !s.sidebarOpen })),
}));

// 组件里只订阅 sidebarOpen
const open = useUiStore((s) => s.sidebarOpen);

适合:platform 侧栏、草稿编辑器工具栏、多页共享的 UI 偏好。

MobX

可观察对象 + 自动依赖追踪,写法接近「改普通对象属性」。学习曲线与「魔法」感高于 Zustand;老项目或团队已标准化时常见。

ZustandMobX
心智模型显式 store + setobservable + action
包体积小中
TypeScript友好需装饰器或 boilerplate
团队新人易上手需理解 reaction

与 Next.js 的边界

App Router 下 默认 Server Component。全局客户端 store 应放在 子树,且 ——见 的数据边界。

'use client'
不要把大对象从 server props 无脑灌进 store
nextjs-essentials

练习

  • 用 Zustand 实现「最近浏览课时」列表(最多 5 条)
  • 对比:同一功能用 Context 写,感受 Provider 与重渲染
  • 读 platform 源码,找一处适合 store 而非 prop drilling 的状态

小结

本地用 State,轻共享用 Context 或 Zustand,服务器数据交给 Query。 下一课 TanStack Query 与 RTK Query 管服务端状态。

加载本节练习…
← 上一课React 生态地图下一课 →服务端状态与 TanStack Query