关于 jotai
jotai 是面向使用 Jotai 的开发者的编码技能,帮助基于版本和项目现状设计状态、实现变更并验证行为。内容强调原子与 store 的边界、最小改动,以及按任务查阅参考资料。
主要功能
- 01分析状态归属、store 与原子身份
- 02按需选择读取、写入与订阅方式
- 03指导异步状态和副作用处理
- 04提供性能、TypeScript 与测试参考
- 05核实 Jotai 及扩展包版本兼容性
适用场景
- 01为新代码选择 Jotai v3 状态模式
- 02排查组件订阅与 store 隔离问题
- 03为异步读取或副作用选择实现方式
- 04根据已安装版本处理 API 迁移
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jotaijs/ jotai-skills --skill jotai安装后在 Claude Code 中输入/jotai确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/async-and-side-effects.mdatom-modeling.mdextensions-decision-guide.mdperformance-and-large-state.mdreact-usage.mdrecipes-decision-guide.mdtools-and-debugging.mdtypescript-and-testing.mdutilities-decision-guide.mdversion-migration.md详细介绍
Jotai
概述
新代码以 Jotai v3 为基准。对于现有项目,提供与版本相关的建议前,先检查已安装的 Jotai 和扩展版本。保留用户要求的行为、架构和依赖选择;仅在有助于完成任务时提供重构建议。
工作流
- 修改代码前,先确认状态的所有权、各读取方和写入方使用的 store、atom 的身份、异步行为以及相关测试。
- 选择满足请求的最小改动。派生计算值;在有帮助时拆分独立更新的状态;如果命令适合通过共享更新路径处理,则使用命名 action atom。
- 在适当的层级验证行为:用 vanilla store 测试状态逻辑和隔离性,用组件测试订阅和用户交互。实际可行时,沿用现有测试设置。
核心不变量
- Atom 配置通过引用标识状态;值属于 store。确保 atom 配置在多次渲染间保持稳定,并让状态流中的所有参与方使用同一个 store。
- 以不可变方式替换对象和数组值。Jotai 使用
Object.is检测值变化;修改值后再设置同一个引用可能会抑制更新。 - 读取函数中的
get会追踪依赖;写入函数中的get只读取值,不会建立响应式订阅。避免在读取中执行无关副作用。 - 读取时使用
useAtomValue,写入时使用useSetAtom,两者兼用时使用useAtom。在命令式集成中使用 vanillaget/set/sub;仅仅读取不会挂载 atom。 - 明确初始化和订阅的生命周期。
onMount由 atom 订阅触发,而非模块加载或 setter 调用。在服务端隔离由请求拥有的状态。 - 优先使用普通 atom 组合,再考虑工具。仅当工具或扩展能更清晰地表达所需语义时才添加,并检查其是否兼容已安装的主版本。
参考资料路由
仅阅读与任务匹配的文件:
references/atom-modeling.md:用于确定 atom 的边界、派生 atom、action atom、可写适配器、重置、存储以及类似 family 的参数化 atom。references/react-usage.md:用于选择 hook、确定 Provider/store 作用域、vanilla 集成、SSR、hydration、动态创建 atom 以及组件架构。references/async-and-side-effects.md:用于处理 Suspense、异步读取、异步 action、中止信号、非 Suspense 状态、刷新流程和外部副作用。references/performance-and-large-state.md:用于渲染调优、selectAtom、focusAtom、splitAtom、大型对象、列表以及依赖图深度。references/typescript-and-testing.md:用于 TypeScript 类型推断、可写 atom 参数类型、ExtractAtomValue以及测试策略。references/utilities-decision-guide.md:用于选择内置工具,例如存储、SSR hydration、可重置/默认 atom、惰性 atom、回调、reducer、select、split 以及 family 迁移。references/extensions-decision-guide.md:用于选择扩展包,例如 TanStack Query、optics、Immer、effects、location、scope、cache、XState、GraphQL/RPC 以及外部存储桥接。references/tools-and-debugging.md:用于选择 Devtools、Babel、SWC 和 Rolldown 支持,以实现调试、标签、React Refresh 和打包工具集成。references/recipes-decision-guide.md:用于判断何时使用或调整官方示例,例如 debounce、listeners、broadcast、compare、toggle、自定义 hook、reducer hook 和 atom effects。references/version-migration.md:用于从 v2 迁移到 v3,包括提高后的 React/TypeScript/Node 要求、仅 ESM 的打包方式、已移除 API 及其替代方案,以及jotai/vanilla/internals的变更。
兼容性与源码验证
此修订以 Jotai 3.0.1 为依据,并涵盖 Jotai 2.20.x 中两者存在差异的部分。在提供与版本相关的 API 指引前,请先确定目标项目安装的 Jotai 和扩展包版本,然后检查其导出的类型、源码或对应版本的文档和测试。不要假设当前文档与已安装版本一致。
评论
支持 Markdown