Coaction 文档

今天先构建精准的本地 store,需要时再将同一状态模型迁移到 Worker、多标签页或协作场景。

Coaction 是一个 Zustand 风格的状态库,它将三项能力设计为一套协同工作的系统:

  • 在 store 或 slice 字段边界上的自动渲染追踪
  • 使用普通访问器 getter 声明的缓存计算状态
  • 发布不可变状态的可变式更新写法

默认路径刻意保持本地、同步。只有当架构确实需要时,你才需要启用 SharedWorker、多标签页或协作能力。

为什么选择 Coaction

当应用拥有大量 selector、重复派生状态,或未来可能使用 Worker 承载状态时,Coaction 最有价值。它不需要你分别拼装追踪、computed、不可变更新和 selector 插件,而是让这些关注点共用同一张响应式依赖图。

这种内聚也有成本。Zustand 更小、更成熟,它的显式 selector 模型对小型 store 往往已经足够。Coaction 的差异主要集中在 observer()、缓存 getter、自然的 this 绑定 action,以及可选的共享运行时;它并不意味着每个 store 都应该变得更复杂。

选择起点

目标建议从这里开始
Vanilla、本地状态coaction/local
React 自动渲染追踪coaction + @coaction/react
Vue、Angular、Svelte 或 Solid对应的 @coaction/* 框架包
Worker 或 SharedWorker 权威端coaction/shared,或为框架 create() 传入 worker
保留现有 Zustand/MobX/Pinia 等运行时对应的整店适配器
通过 Yjs 同步 Coaction 自有状态在拥有状态的一端使用 @coaction/yjs

文档版本

本站面向 Coaction 3.x。一个共享权威端及其所有客户端必须使用相同的 Coaction major 与 wire protocol。

建议尽早了解的设计规则

  1. 对 Coaction 自有状态的写入必须发生在 set() 内。
  2. public 根 schema 在初始化后固定;动态 key 应放在已声明的对象或数组字段中。
  3. 共享 client 是镜像,不是写入权威。调用并等待 action,不要在 client 上调用 setState()
  4. 共享数据必须是严格 JSON tree;本地 store 不受这一限制。
  5. 外部状态适配器绑定整个 store,不能嵌套在原生 slices 中。

继续阅读安装,或直接进入快速开始

本页目录