前端
PythonJava运维数据库
TanStack Query
TanStack Query
  • getting started
    • 快速开始
    • 开发工具
    • Typescript
    • 默认配置
    • 网络模式
  • Query
    • 查询
    • 查询键
    • 查询函数
    • 查询选项
    • 并行查询
    • 有依赖的查询
    • 查询状态指示器
    • 窗口聚焦重新获取数据
    • 禁用/暂停查询
    • 查询重试
    • 分页查询
    • 无限查询
    • 初始化查询数据
  • 占位符
  • Mutation
    • 修改 Mutations
    • 主动查询失效 Query Invalidation
    • 修改导致的失效 Invalidation From Mutations
    • 通过修改的数据更新查询内容
    • 乐观更新
  • 取消查询
  • 默认查询函数
  • 过滤器
  • Suspense
  • 缓存数据
  • Api Reference
    • QueryClient
    • QueryCache
    • MutationCache
    • QueryObserver QueriesObserver
    • InfiniteQueryObserver
    • FocusManager
    • NotifyManager
    • useQuery
    • useQueries useInfiniteQuery
    • useMutation
    • useIsFetching
    • useIsMutating
    • useMutationState
    • useSuspenseQuery
    • useSuspenseInfiniteQuery
    • useSuspenseQueries
    • QueryClientProvider
    • useQueryClient
    • queryOptions
    • infiniteQueryOptions
    • QueryErrorResetBoundary
    • useQueryErrorResetBoundary
    • hydration
由 GitBook 提供支持
在本页

这有帮助吗?

  1. getting started

Typescript

React query 中的数据类型通常可以通过类型推断获得,因此在大多数情况下我们无需提供类型注解:

const { data } = useQuery({
    //  ^ data: number | undefined
    queryKey: ["test"],
    queryFn: () => Promise.resolve(5)
})
const { data } = useQuery({
    //  ^ data: string | undefined,
    queryKey: ["test"],
    queryFn: () => Promise.resolve(5),
    select: data => data.toString()
})

如果 queryFn 具有明确的返回值类型,那么 React Query 就可以自动推导出对应的数据类型。但是绝大多数请求库(例如:axios)默认返回any,在这种情况下,我们需要在queryFn中明确指定其返回值类型:

const fetchData = (): Promise<{ list: Array<string> }> => {
    return fetch("http://localhost:8000/api/get").then(res => res.json())
}

const { data } = useQuery({ queryKey: ["test"], queryFn: fetchData })
//      ^ data: { list: Array<string> } | undefined

捕获错误

const { data, error } = useQuery({ queryKey: ["test"], queryFn: fetchData })

if(error instanceof Error){
    const message = error.message
}
const { data, error } = useQuery<{ Array<string>, Error }>({ queryKey: ["test"], queryFn: fetchData})
上一页开发工具下一页默认配置

最后更新于1年前

这有帮助吗?

React Query中错误类型默认为unknown,这也符合 TypeScript 在 catch 子语句中提供的默认类型,请阅读 。因此安全的运行方式是error在执行时运行类型检查;另一种方式是显式定义data和error类型。

useUnknownInCatchVariables