Query v0.1 Breaking Changes
client.query(...)已移除。IoQueryOptions已拆分为IoQueryDefinition与IoQueryObserverOptions。IoQuery类型已替换为IoQueryHandle+IoQueryObserver。mutationFn新签名:(variables, { signal }) => Promise<TData>。
新 API 对照
Section titled “新 API 对照”| 旧 API | 新 API |
|---|---|
client.query(options) | client.defineQuery(definition) |
query.fetch()/prefetch() | queryHandle.fetch()/prefetch() |
useQuery({ key, queryFn, ... }) | useQuery({ key, queryFn, ... })(内部走 define/observe 模型) |
IoQueryOptions | IoQueryDefinition + IoQueryObserverOptions |
状态模型变化
Section titled “状态模型变化”IoQueryState 新增:
failureReasonisInvalidatedisPlaceholderData
IoFetchStatus 新增 paused,并且派生 flags 增加:
isStalehasDataisFetchedisFetchedAfterMount
- 同 key + 不同
queryFn会直接抛错(硬失败)。 placeholderData只在 observer 侧可见,不会写入缓存dataUpdatedAt。refetchOnMount默认值为'stale'。
升级检查清单
Section titled “升级检查清单”- 搜索并替换
client.query(->client.defineQuery(。 - 检查所有
mutationFn是否接收并透传signal。 - 检查筛选器使用:
IoQueryFilter现在支持active/stale/fetching。 - 如有 SSR 注水,改用
dehydrate()/hydrate()。