概述

@tanstack/svelte-query 包提供了一流的 API,用于通过 Svelte 使用 TanStack Query。

示例

在项目根目录附近包含 QueryClientProvider:

svelte
<script lang="ts">
  import { QueryClient, QueryClientProvider } from '@tanstack/svelte-query'
  import Example from './lib/Example.svelte'

  const queryClient = new QueryClient()
</script>

<QueryClientProvider client={queryClient}>
  <Example />
</QueryClientProvider>
<script lang="ts">
  import { QueryClient, QueryClientProvider } from '@tanstack/svelte-query'
  import Example from './lib/Example.svelte'

  const queryClient = new QueryClient()
</script>

<QueryClientProvider client={queryClient}>
  <Example />
</QueryClientProvider>

然后从任何组件调用任何函数(例如 createQuery):

svelte
<script lang="ts">
  import { createQuery } from '@tanstack/svelte-query'

  const query = createQuery({
    queryKey: ['todos'],
    queryFn: () => fetchTodos(),
  })
</script>

<div>
  {#if $query.isLoading}
    <p>加载中...</p>
  {:else if $query.isError}
    <p>错误:{$query.error.message}</p>
  {:else if $query.isSuccess}
    {#each $query.data as todo}
      <p>{todo.title}</p>
    {/each}
  {/if}
</div>
<script lang="ts">
  import { createQuery } from '@tanstack/svelte-query'

  const query = createQuery({
    queryKey: ['todos'],
    queryFn: () => fetchTodos(),
  })
</script>

<div>
  {#if $query.isLoading}
    <p>加载中...</p>
  {:else if $query.isError}
    <p>错误:{$query.error.message}</p>
  {:else if $query.isSuccess}
    {#each $query.data as todo}
      <p>{todo.title}</p>
    {/each}
  {/if}
</div>

SvelteKit

如果您正在使用 SvelteKit,请查看 SSR 和 SvelteKit

可用函数

Svelte Query 提供了有用的函数和组件,可以更轻松地管理 Svelte 应用程序中的服务器状态。

  • createQuery
  • createQueries
  • createInfiniteQuery
  • createMutation
  • useQueryClient
  • useIsFetching
  • useIsMutating
  • useHydrate
  • <QueryClientProvider>
  • <HydrationBoundary>

Svelte Query 和 React Query 之间的重要区别

Svelte Query 提供的 API 与 React Query 类似,但需要注意一些关键区别。

  • Svelte Query 中的许多函数返回一个 Svelte store。要响应式地访问这些 store 上的值,您需要在 store 前面加上一个 $。您可以在此处了解有关 Svelte store 的更多信息。
  • 如果您的查询或变更依赖于变量,则必须为选项使用 store。您可以在此处阅读更多相关信息。