前端
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

快速开始

安装

pnpm add @tanstack/react-query

同时,建议配合 ESLint 插件来帮助捕获编码时的错误:

pnpm add -D @tanstack/eslint-plugin-query

添加@tanstack/eslint-plugin-query到配置文件的插件部分:

{
  "plugins": ["@tanstack/query"]
}

然后在规则部分配置你想要使用的规则:

{
  "rules": {
    "@tanstack/query/exhaustive-deps": "error",
    "@tanstack/query/prefer-query-object-syntax": "error"
  }
}

推荐配置:为此插件启用所有推荐的规则,添加plugin:@tanstack/eslint-plugin-query/recommended扩展

{
    "extends": ["plugin:@tanstack/eslint-plugin-query/recommended"]
}

快速开始

React Query主要包含3个核心概念,这三个概念构成了React Query的大部分核心功能。

  • 查询

  • 突变

  • 查询失效

import {
  useQuery,
  useMutation,
  useQueryClient,
  QueryClient,
  QueryClientProvider
} from "@tanstack/react-query"

// 创建client
const queryClient = new QueryClient()

function App() {
  return (
    <QueryClientProvider client={queryClient}>
      <Todos/>
    </QueryClientProvider>
  )
}

function Todos() {
  // 访问client
  const queryClient = useQueryClient()

  // queries
  const query = useQuery({
    queryKey: ['todos'],
    queryFn: () => fetch('http://localhost:4000/api/get')
  })

  // 突变
  const mutations = useMutation({
    mutationFn: () => fetch("http://localhost:4000/api/post"),
    onSuccess: () => {
      // 重新获取最新数据
      queryClient.invalidateQueries({ queryKey: ['todos'] })
    }
  })

  return (
    <>
      <div>
        {JSON.stringify(query.data)}
      </div>
      <button onClick={() => mutations.mutate()}>
        Add Todo
      </button>
    </>
  )
}

上述代码片段展示了一个由查询、突变、查询失效

下一页开发工具

最后更新于1年前

这有帮助吗?