用途:这是一份 Web 应用状态管理模式的说明性资料,讨论状态应存放在哪里、如何随应用复杂度变化做出选择,并涵盖客户端状态、服务端状态、URL 状态与缓存策略。资料中把状态划分为 UI 状态、服务端状态、URL 状态、浏览器状态和应用状态,并给出各自的特征。
主要能力:一是区分客户端状态与服务端状态,指出服务端状态可能过期、需要缓存策略、是异步的(有加载与错误状态),并在多个组件间共享。二是提出状态共置原则,即状态尽量靠近使用位置,并给出组件局部状态、提升状态、Context、全局状态的适用层级。三是介绍服务端状态库(如 TanStack Query、SWR、Apollo)能提供的自动缓存与去重、后台重新获取、加载与错误状态、缓存失效、乐观更新等能力。四是说明 URL 状态适用于分页、筛选、搜索、标签页与视图等需要可分享、可收藏、刷新后保留的场景。五是列出浏览器存储的对比。六是介绍缓存策略,包括 stale-while-revalidate 与 network-first,以及变更后通过 invalidateQueries 做缓存失效。七是用状态机替代多个布尔量,避免出现加载中又出错的不可达状态。
使用方式:资料以概念解释与代码片段示范为主,示例使用 React、useState、useContext、useQuery、useSearchParams 等写法,以及 'use client' 的客户端组件标记。资料未提供安装命令、运行步骤或具体工具调用方式。
适用场景:前端或全栈项目中决定状态存放位置、排查刷新丢失筛选条件、避免重复请求与 UI 不同步、处理复杂状态迁移时。
限制:内容偏教学与决策框架,不保证适用于所有框架;给出的代码为示意,未提供完整可运行工程、版本要求或性能基准。涉及令牌存储时仅提示考虑安全影响并倾向 HttpOnly Cookie,未给出完整安全方案。资料部分末尾存在截断,相关内容暂未提供。