跳转到内容

Vue

@iostore/vue 提供只读订阅与双向绑定两种常见接入方式,适配 Vue ref 语义。

  • Vue 组件中读取 IO 状态。
  • 表单输入与 IO 双向同步。
  • 需要按路径粒度控制更新。

安装相关依赖(任选一种包管理工具):

Terminal window
npm i @iostore/store @iostore/vue
import { io } from '@iostore/store';
import { useIO } from '@iostore/vue';
const store = io({ count: 0 });
const state = useIO(store.count);

useIO 返回 ShallowRef,适合直接在模板中读取。

import { ioRef } from '@iostore/vue';
const countRef = ioRef(store.count);

适合 v-model、输入组件等读写一体场景。

const state = useIO(store.count, { schedule: 'microtask' });

可选值:sync | microtask | animationFrame

场景API说明
只读订阅useIO(unitOrDerived, options?)返回 ShallowRef,适合展示读取。
双向绑定ioRef(unit, options?)返回可写 Ref,适合 v-model
通知调度options.schedulesync / microtask / animationFrame
路径写入`unit.set(nextupdater)`
批量写入batch(fn)减少连续写入引发的通知抖动。
// 错误:把 useIO 返回值当可写 ref
const count = useIO(store.count);
// count.value++
// 推荐:写入用 ioRef 或 set
const countRef = ioRef(store.count);
countRef.value += 1;
// 错误:订阅根节点
const state = useIO(store);
// 推荐:路径订阅
const count = useIO(store.count);
  • 在模板中直接操作根状态,导致更新范围过大。
  • 误把 useIO 当可写 ref:写入请用 ioRefset()
  • 高频输入未做节流/防抖,副作用触发过密。
  • 展示用 useIO,交互输入用 ioRef
  • 路径订阅优先于根订阅,减少组件重渲染。
  • 结合 Schedule 控制通知时机。
  • 查看 派生值 的组合方式。
  • 需要 SSR 时,查看 Nuxt 实战章节。