React Query 是一个用于在 React 应用中管理服务器状态的库。它提供了一套简单而强大的工具来处理数据获取、缓存、同步和更新。
关键特性:
数据获取和缓存:自动缓存请求的数据,并在需要时重新获取。
状态管理:轻松管理加载、错误和成功状态。
分页和无限加载:支持分页和无限滚动的数据获取。
后台刷新:可以在后台自动刷新数据以保持最新。
SSR 支持:支持服务器端渲染(SSR)和静态站点生成(SSG)。
乐观更新:允许在变更前更新 UI,以提高用户体验。
核心 API
-
QueryClient
-
new QueryClient(): 创建一个新的 QueryClient 实例。
-
-
QueryClientProvider
-
<QueryClientProvider client={queryClient}>: 提供 QueryClient 的上下文。
-
-
useQuery
-
useQuery(queryKey, queryFn, options): 获取数据的主要钩子。
-
-
useMutation
-
useMutation(mutationFn, options): 用于创建或更新数据的钩子。
-
-
useQueryClient
-
useQueryClient(): 获取当前的 QueryClient 实例。
-
高级 API
-
useQueries
-
useQueries(queryConfigs): 并行获取多个查询。
-
-
useInfiniteQuery
-
useInfiniteQuery(queryKey, queryFn, options): 用于获取分页数据。
-
-
useIsFetching
-
useIsFetching(queryKey): 检查是否有正在进行的查询。
-
-
useIsMutating
-
useIsMutating(mutationKey): 检查是否有正在进行的变更。
-
-
useHydrate
-
useHydrate(state): 用于在 SSR 中恢复状态。
-
工具函数
-
QueryClient Methods
-
queryClient.fetchQuery(): 手动触发查询。 -
queryClient.prefetchQuery(): 预取数据。 -
queryClient.invalidateQueries(): 使查询无效。 -
queryClient.refetchQueries(): 重新获取查询。 -
queryClient.setQueryData(): 手动设置查询数据。 -
queryClient.getQueryData(): 获取查询数据。
-
-
dehydrate / hydrate
-
dehydrate(queryClient): 序列化查询状态。 -
hydrate(queryClient, dehydratedState): 恢复查询状态。
-
配置
-
QueryCache
-
new QueryCache(): 自定义查询缓存。
-
-
MutationCache
-
new MutationCache(): 自定义变更缓存。
-