Skip to main content

概览

@tanstack/svelte-query 包提供了一级 API,用于在 Svelte 中使用 TanStack Query。

例子

在项目的根文件中(如: src/index.svelte)导入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):

<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>
  • <Hydrate>

Svelte Query & React Query 之间的主要差异

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

  • Svelte Query 有部分函数的返回值会返回 Svelte Store 形式。为了使这些返回值具有响应式的特点,你可能需要为返回的 store 加上$前缀。原因情看 Svelte 的官方文章
  • 如果你的查询或修改依赖了变量,你必须保证这个变量是响应式的。原因请看 Svelte 的响应式部分