跳转到内容

选择框架适配器

如果组件需要框架原生订阅、响应式读取和生命周期清理,就选择对应的 ZhuàngTài adapter;否则直接使用 @zhuangtai-js/core

  • 直接使用 Core:状态位于 SDK、数据层、命令、事件处理器或服务端模块,不需要框架渲染生命周期。
  • 使用 framework adapter:组件需要在 atom 变化时更新,并让框架负责订阅和清理。
  • 保持同一状态模型:把 atomcomputed 放在框架无关的 state module,只在 UI 边界接入 adapter。

所有 adapter 都要求 @zhuangtai-js/core ^0.5.0。adapter 不增加批处理、延迟、事务或新的相等性判断;Core 的 set 立即生效,watch 同步执行,相等性使用 Object.is

  • 只读:展示派生值时使用 read-only API,例如 useAtomValuetoReadablecreateAtomValue
  • 只写:命令按钮只需要 setter 时使用 setter-only API,避免建立不必要的订阅。
  • 读写:表单或计数器同时需要当前值和更新函数时使用 read-write API。

Core 按引用判断对象和数组。不要原地修改再传回同一个引用;使用对象展开、新数组或 map 返回新值:

counterAtom.set((state) => ({
...state,
history: [...state.history, state.count + 1],
}));

使用组件、hook、store、effect scope 或 owner 提供的清理边界。手动订阅时保存取消函数;手动创建 Vue effectScope() 或 Solid createRoot() 时,在边界结束调用 scope.stop()dispose()。SSR 为每个请求创建独立的可变 atom/store,不要共享服务器 module scope 状态。

使用 @zhuangtai-js/reactuseAtomValueuseSetAtomuseAtom;它通过 React 的 useSyncExternalStore 对接 Core。先看 React 快速指南,再查 React 参考

React Native / Expo 直接使用同一个 @zhuangtai-js/react,不需要 Provider 或原生专用 adapter。React peer 范围说明兼容性,但不代表每一种 native renderer 都经过独立测试。前往 React Native / Expo 指南 查看原生 UI 和 AsyncStorage 持久化路径。

使用 @zhuangtai-js/preact 的原生 hooks 和 preact/compat snapshot bridge。先看 Preact 快速指南,再查 Preact 参考

使用 @zhuangtai-js/vueuseAtomValueuseSetAtomuseAtom;读取 API 在 setup() 或活动 effect scope 中运行。先看 Vue 快速指南,再查 Vue 参考

使用 @zhuangtai-js/sveltetoReadabletoWritable 转为标准 svelte/store。先看 Svelte 快速指南,再查 Svelte 参考

使用 @zhuangtai-js/solidcreateAtomValuecreateSetAtomcreateAtomSignal;客户端读取 API 绑定当前 owner。先看 Solid 快速指南,再查 Solid 参考

框架 package 只读 只写 读写 生命周期边界
React @zhuangtai-js/react useAtomValue useSetAtom useAtom React component
React Native / Expo @zhuangtai-js/react useAtomValue useSetAtom useAtom React Native component
Preact @zhuangtai-js/preact useAtomValue useSetAtom useAtom Preact component
Vue @zhuangtai-js/vue useAtomValue useSetAtom useAtom effect scope / component
Svelte @zhuangtai-js/svelte toReadable atom.set toWritable store subscription
Solid @zhuangtai-js/solid createAtomValue createSetAtom createAtomSignal owner / createRoot
  • 选择一个 框架快速指南,复制最小 counter,再替换成自己的 state module。
  • 回到 Core 概念 了解同步 getsetwatchcomputed
  • 需要 reload 后恢复状态时,阅读 Persist 参考