闲社服务运行正常AI智能体自动化平台
s

状态管理

技能标识:state-management

Deep workflow for client (and hybrid) state—modeling domain vs UI state, server cache vs client store, async and consistency, DevTools, persistence, and testing. Use when choosing Redux/Zustand/Recoil/Context, fixing stale UI, or designing data flow in React/Vue/Svelte apps.

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 1.0.0
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

状态管理

状态管理(深度工作流程)

大多数状态错误本质上是所有权和生命周期错误:谁写入、何时同步、失败时如何处理。引导用户采用显式模型,而非临时全局变量。

何时提供此工作流程

触发条件:

  • - Prop 传递困难、UI 不一致、多数据源冲突
  • 变更后数据陈旧;乐观更新出错
  • 选择库 vs Context vs 服务端状态库(React Query、SWR、Apollo)
  • SSR/水合 + 客户端状态不匹配

初始建议:

使用六个阶段:(1) 盘点状态类型,(2) 分配所有权,(3) 服务端与客户端边界,(4) 异步与更新,(5) 持久化与 URL,(6) 测试与 DevTools。确认框架和数据获取方式。



阶段 1:盘点状态类型

目标: 在选择工具前,分类存在哪些状态。

分类

  • - 远程/服务端状态:API 响应、分页、过期状态——通常不是 Redux 形态
  • URL 状态:可分享/可书签化的筛选器、标签页、选择项
  • 会话 UI 状态:模态框、开关、临时表单草稿
  • 客户端派生状态:远程数据的排序/筛选视图——避免将原始数据和派生数据都存储为可写数据源
  • 全局横切状态:认证用户、主题、功能开关——明确只读与可写规则

退出条件: 状态切片 → 数据源 → 消费者 的表格。



阶段 2:分配所有权

目标: 每个数据源只有一个写入者(或严格的 reducer 模式)。

经验法则

  • - 如果状态不被共享,就近存放——不要过早全局化
  • 仅当多个子树需要或 prop 链造成困扰且所有权明确时,才提升状态
  • 避免在没有同步规则的情况下,将服务端实体复制到多个存储中

退出条件: 每个切片明确:谁设置、谁读取、失效策略。



阶段 3:服务端与客户端边界

目标: 远程数据优先使用服务端状态库;真正的客户端关注点使用客户端存储。

指导建议

  • - React Query / SWR / RTK Query:缓存、去重、重新获取、后台刷新——适用于 HTTP JSON
  • GraphQL 客户端:规范化缓存 + 带更新策略的变更操作
  • Redux:适用于可预测的全局客户端状态 + 中间件——并非每个获取响应都需要

反模式

  • - 在 Apollo/Query 更合适的情况下,将完整 API JSON 未经规范化存入 Redux
  • 双重获取:SSR 后客户端未经协调重新获取——使用水合模式

退出条件: 远程数据具有定义的缓存键、过期时间和变更流程。



阶段 4:异步与一致性

目标: 加载、错误、空状态和重试是一等公民;乐观更新安全或限定范围。

实践

  • - 乐观 UI:回滚路径;幂等变更;服务端协调
  • 排序:串行与并行请求;竞态取消(AbortController)
  • 分页/无限滚动:游标稳定性;页面去重

并发

  • - 最后写入获胜意识;如果服务端支持,使用版本控制或 ETag

退出条件: 用户可见的失败模式已处理;无静默的陈旧成功状态。



阶段 5:持久化与 URL

目标: 决定什么在刷新后保留、什么可分享以及安全性。

选项

  • - 用户分享链接时,筛选器/标签页使用 URL 查询参数
  • 草稿使用 localStorage/sessionStorage——注意 XSS 风险(敏感数据 → 不使用 localStorage)
  • 离线使用 IndexedDB——复杂度代价

退出条件: 敏感数据绝不不恰当地在客户端持久化。



阶段 6:测试与 DevTools

目标: 状态逻辑可单元测试;需要时可时间旅行/调试。

实践

  • - 规则使用纯 reducer / 小型 hooks
  • 关键流程使用 MSW 或模拟服务端进行集成测试
  • DevTools:Redux/Query 面板——确保团队知道如何检查缓存

最终审查清单

  • - [ ] 状态已分类:远程 vs UI vs URL vs 派生
  • [ ] 每个数据源单一所有者;失效策略明确
  • [ ] 为 API 数据选择了服务端缓存策略
  • [ ] 异步/错误/空状态/乐观更新路径已指定
  • [ ] 持久化/安全边界已遵守

有效指导技巧

  • - 从最小化开始:Context + 服务端状态库可解决许多Redux 规模的问题。
  • 始终问:变更返回后,数据源是什么?
  • 调试奇怪的效果行为时,提及 React Strict Mode 的双重调用。

处理偏差

  • - 遗留的全 Redux 架构:增量迁移——先处理功能模块,再将远程数据迁移到 Query。
  • 非 React 环境:将模式映射到 signals/stores(Vue Pinia、Svelte stores),遵循相同的所有权原则。

标签

skill ai

通过对话安装

以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 state-management-1776031341 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 state-management-1776031341 技能

通过命令行安装

skillhub install state-management-1776031341

下载

⬇ 下载 state-management v1.0.0(免费)

文件大小: 3.08 KB | 发布时间: 2026-4-13 12:10

v1.0.0 最新 2026-4-13 12:10
State-management 1.0.0 – Initial Release

- Introduces a comprehensive workflow for modeling and managing client, server, and hybrid state in modern frontend applications.
- Defines six clear stages: inventory state kinds, assign ownership, clarify boundaries, handle async/consistency, set up persistence/URLs, and ensure testability/dev tool support.
- Includes explicit guidance for choosing between Redux, Context, server-state libraries (React Query, SWR, Apollo), and more.
- Provides detailed checklists, practical anti-patterns, and tips for handling common state missteps and migration from legacy patterns.
- Applicable to React, Vue, and Svelte projects, encouraging explicit source-of-truth models and disciplined ownership.
返回顶部