首页/框架/6

模块 06 · 数据流 · MODULE 06

状态与服务端数据:先分类,再选工具

把状态分成局部、派生、URL、表单、全局客户端和服务端数据,再决定使用框架内置能力、Redux Toolkit、Pinia 或 TanStack Query。

进阶7 小时9 个核心主题

先用一句白话理解

不同状态像不同物品:随手纸条放口袋,团队制度放共享文档,银行余额要去银行查询;把它们全塞进一个抽屉,只会越来越乱。

学完你能做到什么

01

为状态选择唯一可信来源和合理生命周期

02

判断何时只需 React/Vue 内置状态,何时需要全局 Store

03

使用 Redux Toolkit 或 Pinia 组织跨页面客户端状态

04

使用 TanStack Query 管理缓存、失效、分页和乐观更新

05

处理请求竞态、实时更新、离线恢复与失败回滚

把每个核心概念讲透

不要把知识点当作名词列表。下面每一项都要回到真实项目中回答:它解决什么问题,如何验证,以及在哪些条件下会失效。

01CORE CONCEPT

状态分类

先区分组件、状态、渲染、网络与服务端边界。把这个概念放回“构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用最小示例、Profiler、测试和构建产物验证机制:完成“为 Issue Tracker 画出状态归属和生命周期表”,记录现象、预期、差异和结论。
02CORE CONCEPT

派生状态与 URL 状态

先区分组件、状态、渲染、网络与服务端边界。把这个概念放回“构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用最小示例、Profiler、测试和构建产物验证机制:完成“用 Redux Toolkit 或 Pinia 管理筛选偏好与草稿”,记录现象、预期、差异和结论。
03CORE CONCEPT

React Reducer/Context

先区分组件、状态、渲染、网络与服务端边界。把这个概念放回“构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用最小示例、Profiler、测试和构建产物验证机制:完成“用服务端数据工具完成列表缓存和分页”,记录现象、预期、差异和结论。
04CORE CONCEPT

Redux Toolkit

先区分组件、状态、渲染、网络与服务端边界。把这个概念放回“构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用最小示例、Profiler、测试和构建产物验证机制:完成“实现乐观创建、失败回滚与实时事件去重”,记录现象、预期、差异和结论。
05CORE CONCEPT

Pinia

先区分组件、状态、渲染、网络与服务端边界。把这个概念放回“构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用最小示例、Profiler、测试和构建产物验证机制:完成“为 Issue Tracker 画出状态归属和生命周期表”,记录现象、预期、差异和结论。
06CORE CONCEPT

TanStack Query

先区分组件、状态、渲染、网络与服务端边界。把这个概念放回“构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用最小示例、Profiler、测试和构建产物验证机制:完成“用 Redux Toolkit 或 Pinia 管理筛选偏好与草稿”,记录现象、预期、差异和结论。
07CORE CONCEPT

缓存新鲜度与失效

先区分组件、状态、渲染、网络与服务端边界。把这个概念放回“构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用最小示例、Profiler、测试和构建产物验证机制:完成“用服务端数据工具完成列表缓存和分页”,记录现象、预期、差异和结论。
08CORE CONCEPT

分页与乐观更新

先区分组件、状态、渲染、网络与服务端边界。把这个概念放回“构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用最小示例、Profiler、测试和构建产物验证机制:完成“实现乐观创建、失败回滚与实时事件去重”,记录现象、预期、差异和结论。
09CORE CONCEPT

实时与离线状态

先区分组件、状态、渲染、网络与服务端边界。把这个概念放回“构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。”中,回答它解决了什么问题、依赖哪些输入、会在哪些边界失效。

验证方式用最小示例、Profiler、测试和构建产物验证机制:完成“为 Issue Tracker 画出状态归属和生命周期表”,记录现象、预期、差异和结论。

这一章的学习步骤

1状态分类
2派生状态与 URL 状态
3React Reducer/Context
4Redux Toolkit
5Pinia
6TanStack Query
7缓存新鲜度与失效
8分页与乐观更新
9实时与离线状态
STEP 01

为 Issue Tracker 画出状态归属和生命周期表

STEP 02

用 Redux Toolkit 或 Pinia 管理筛选偏好与草稿

STEP 03

用服务端数据工具完成列表缓存和分页

STEP 04

实现乐观创建、失败回滚与实时事件去重

动手任务

PROJECT BRIEF

构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。

交付清单

  • 状态分类与唯一数据源表
  • Store 与服务端缓存实现
  • 竞态、回滚和离线场景测试记录

Redux Toolkit 的最小可运行 Store

ts
import { configureStore, createSlice } from "@reduxjs/toolkit";

const counter = createSlice({
  name: "counter",
  initialState: { value: 0 },
  reducers: {
    increment(state) {
      state.value += 1;
    },
  },
});

const store = configureStore({ reducer: counter.reducer });
store.dispatch(counter.actions.increment());
console.log(store.getState()); // { value: 1 }

先让它跑起来,再逐行修改。最有效的学习方式,是观察你的改动如何影响结果。

三级练习:从复现到生产

每一级都比上一级少一点提示、多一点约束。只有在不看答案也能完成验收时,知识才真正变成能力。

01
LEVEL 1 · 基础复现

让核心机制第一次跑通

  • 为 Issue Tracker 画出状态归属和生命周期表
  • 用 Redux Toolkit 或 Pinia 管理筛选偏好与草稿
  • 用服务端数据工具完成列表缓存和分页
  • 实现乐观创建、失败回滚与实时事件去重
02
LEVEL 2 · 独立改造

改变约束,验证你真的理解

  • 不看教程,独立完成:为状态选择唯一可信来源和合理生命周期
  • 不看教程,独立完成:判断何时只需 React/Vue 内置状态,何时需要全局 Store
  • 不看教程,独立完成:使用 Redux Toolkit 或 Pinia 组织跨页面客户端状态
  • 不看教程,独立完成:使用 TanStack Query 管理缓存、失效、分页和乐观更新
  • 不看教程,独立完成:处理请求竞态、实时更新、离线恢复与失败回滚
03
LEVEL 3 · 生产挑战

把实验变成能交付的工程

  • 状态分类与唯一数据源表
  • Store 与服务端缓存实现
  • 竞态、回滚和离线场景测试记录
  • 检查缓存、Hydration、错误恢复、可观测性和部署约束,并把检查结果写进项目复盘。

最容易踩的坑

01

把服务端缓存复制进全局 Store 后双向同步

02

把能计算出的值再次保存为 State

03

每个页面创建一份相同请求,忽略缓存键设计

04

乐观更新只考虑成功路径,没有保存回滚快照

先回答,再展开参考答案

Q01这一课最核心的业务目标是什么?

把状态分成局部、派生、URL、表单、全局客户端和服务端数据,再决定使用框架内置能力、Redux Toolkit、Pinia 或 TanStack Query。

Q02如果只能保留三个验收结果,应该保留什么?

状态分类与唯一数据源表;Store 与服务端缓存实现;竞态、回滚和离线场景测试记录

Q03学习过程中最需要主动避免什么?

把服务端缓存复制进全局 Store 后双向同步;把能计算出的值再次保存为 State;每个页面创建一份相同请求,忽略缓存键设计;乐观更新只考虑成功路径,没有保存回滚快照

Q04怎样证明你不是“看懂了”,而是真的会做?

独立完成“构建支持筛选、分页、乐观创建、实时同步和离线草稿的 Issue Tracker。”,并用测试、数据或运行结果逐项验收交付清单。

PRODUCTION READINESS

本课完成检查表

全部能打勾,再进入下一课。

  • 目标明确:为状态选择唯一可信来源和合理生命周期
  • 核心机制已用最小实验验证:为 Issue Tracker 画出状态归属和生命周期表
  • 风险已检查:把服务端缓存复制进全局 Store 后双向同步
  • 风险已检查:把能计算出的值再次保存为 State
  • 风险已检查:每个页面创建一份相同请求,忽略缓存键设计
  • 风险已检查:乐观更新只考虑成功路径,没有保存回滚快照
  • 交付物可复现:状态分类与唯一数据源表
  • 交付物可复现:Store 与服务端缓存实现
  • 交付物可复现:竞态、回滚和离线场景测试记录

继续深入的官方资料

课程版本基线:2026 年 7 月。涉及版本号时,以链接中的官方文档为最终依据。