跳到主要内容

RxDBResource<T>

Defined in: rxdb-vue/src/hooks.ts:77

基础查询 hooks 返回的响应式资源。

Remarks​

这是一个 reactive 对象,不是一组 Ref。 必须整体持有,或用 toRefs() 解构:

const user = useGet(User, 'user-1'); // ✅ 整体持有
const { value } = toRefs(useGet(User, 'user-1')); // ✅ toRefs 后解构
const { value } = useGet(User, 'user-1'); // ❌ 一次性快照,之后永不更新

同包的 InfiniteScrollResource 成员是 ComputedRef、解构安全, 两者形态不同是历史契约(RVU-008),不要互相类推。

状态组合​

阶段isLoadinghasValueisEmptyerrorvalue
首次订阅前truefalseundefinedundefineddefaultValue
收到数据falsetrue是否空集undefined新值
出错falsefalseundefined错误上一次的值
选项变化、新一轮查询进行中truefalseundefinedundefined上一次的值(stale)
无 next 直接 completefalsefalseundefinedundefined上一次的值(stale)

关键点:value 在重查期间保留旧值(stale-while-revalidate), 但 hasValue 会同步落回 false —— 旧值不再被宣称属于新查询条件(RVU-003)。 判断「当前值可信」要看 hasValue,不要看 value !== defaultValue。

生命周期​

  • Provider:必须在调用 hook 的组件或其祖先上调用 provideRxDB(),否则抛错。
  • SSR:服务端无 window,跳过订阅,资源停在 isLoading: true 的初始态; 客户端 hydrate 是全新 setup,会正常发起查询。
  • 清理:订阅挂在当前 effect scope 上,scope 销毁(组件卸载)时自动退订, 之后到达的迟到 emission 一律丢弃。

Type Parameters​

Type ParameterDescription
T查询结果类型。

Properties​

error​

readonly error: Error | undefined;

Defined in: rxdb-vue/src/hooks.ts:86

本轮查询的错误;成功或重查开始时清空。非 Error 载荷会被包成真正的 Error。


hasValue​

readonly hasValue: boolean;

Defined in: rxdb-vue/src/hooks.ts:99

value 是否属于当前查询条件。重查开始即落回 false,收到 next 才为 true。


isEmpty​

readonly isEmpty: boolean | undefined;

Defined in: rxdb-vue/src/hooks.ts:95

结果是否为空:数组按 length === 0,单实体按 == null。 undefined 表示本轮尚无结论(加载中、出错、或无 next 就 complete)。


isLoading​

readonly isLoading: boolean;

Defined in: rxdb-vue/src/hooks.ts:90

是否有一轮查询正在进行(从订阅入口到首个 next / error / complete)。


value​

readonly value: T;

Defined in: rxdb-vue/src/hooks.ts:82

查询结果;订阅前与出错时是 hook 的 defaultValue, 重查期间保留上一轮的值(配合 hasValue 判断是否可信)。