用途:该技能面向 TanStack Query 的查询取消场景,帮助在 React 中正确实现请求取消、AbortSignal 传递与取消后的状态处理。
主要能力:
- 在 queryFn 中消费 TanStack Query 提供的 signal,使 fetch 等请求可被真正取消。
- 使用 queryClient.cancelQueries({ queryKey: ['todos'] }) 按查询键取消。
- 在乐观写入前先取消相关查询,避免竞态。
- 在嵌套请求中复用同一个 signal,例如先取列表再并发取详情。
- 涉及 CancelledError、取消后回滚、fetch 与 axios 取消等主题。
必要用法:queryFn 需接收 { signal } 并传给请求,例如 fetch(/api/todos/${todoId}, { signal });取消时调用 queryClient.cancelQueries({ queryKey: [...] })。
常见错误:忽略 AbortSignal 会导致请求无法取消;误以为组件卸载会自动取消,未消费 signal 的查询仍可能继续并写入缓存;Suspense 钩子存在取消限制,需要取消行为时应改用非 Suspense 的 useQuery。
限制:资料未提供安装命令、版本要求、axios 具体示例及更多平台细节,暂未提供。