Skip to content

Commit 71feb90

Browse files
Lucas127128TkDodo
andauthored
docs(svelte): more guides (#12478)
* more svelte guide * Fix examples --------- Co-authored-by: Dominik Dorfmeister 🔮 <office@dorfmeister.cc>
1 parent 05d9b6a commit 71feb90

3 files changed

Lines changed: 160 additions & 0 deletions

File tree

‎docs/config.json‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,14 @@
541541
"label": "Network Mode",
542542
"to": "framework/svelte/guides/network-mode"
543543
},
544+
{
545+
"label": "Parallel Queries",
546+
"to": "framework/svelte/guides/parallel-queries"
547+
},
548+
{
549+
"label": "Query Retries",
550+
"to": "framework/svelte/guides/query-retries"
551+
},
544552
{
545553
"label": "Mutations",
546554
"to": "framework/svelte/guides/mutations"
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
id: parallel-queries
3+
title: Parallel Queries
4+
ref: docs/framework/react/guides/parallel-queries.md
5+
replace:
6+
{
7+
'@tanstack/react-query': '@tanstack/svelte-query',
8+
'useQuery': 'createQuery',
9+
'useQueries': 'createQueries',
10+
'useInfiniteQuery': 'createInfiniteQuery',
11+
'useMutation[(]': 'createMutation(() => ',
12+
'useQuery[(]': 'createQuery(() => ',
13+
'useQueries[(]': 'createQueries(() => ',
14+
'useInfiniteQuery[(]': 'createInfiniteQuery(() => ',
15+
'hooks': 'functions',
16+
}
17+
---
18+
19+
[//]: # 'Example'
20+
21+
```svelte
22+
<script lang="ts">
23+
import { createQuery } from '@tanstack/svelte-query'
24+
25+
// The following queries will execute in parallel
26+
const usersQuery = createQuery(() => ({ queryKey: ['users'], queryFn: fetchUsers }))
27+
const teamsQuery = createQuery(() => ({ queryKey: ['teams'], queryFn: fetchTeams }))
28+
const projectsQuery = createQuery(() => ({ queryKey: ['projects'], queryFn: fetchProjects }))
29+
...
30+
</script>
31+
```
32+
33+
[//]: # 'Example'
34+
[//]: # 'Info'
35+
[//]: # 'Info'
36+
[//]: # 'DynamicParallelIntro'
37+
38+
If the number of queries you need to execute changes, you cannot use manual querying since that would break reactivity. Instead, TanStack Query provides a `createQueries` function, which you can use to dynamically execute as many queries in parallel as you'd like.
39+
40+
[//]: # 'DynamicParallelIntro'
41+
[//]: # 'DynamicParallelDescription'
42+
43+
`createQueries` accepts an **accessor that returns an options object** with a **queries key** whose value is an **array of query objects**. It returns an **array of query results**:
44+
45+
[//]: # 'DynamicParallelDescription'
46+
[//]: # 'Example2'
47+
48+
```svelte
49+
<script lang="ts">
50+
import { createQueries } from '@tanstack/svelte-query'
51+
52+
const { users }: { users: { id: string }[] } = $props()
53+
const userQueries = createQueries(() => ({
54+
queries: users.map((user) => {
55+
return {
56+
queryKey: ['user', user.id],
57+
queryFn: () => fetchUserById(user.id),
58+
}
59+
}),
60+
}))
61+
</script>
62+
```
63+
64+
[//]: # 'Example2'
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
id: query-retries
3+
title: Query Retries
4+
ref: docs/framework/react/guides/query-retries.md
5+
replace:
6+
{
7+
'@tanstack/react-query': '@tanstack/svelte-query',
8+
'useQuery': 'createQuery',
9+
'useQueries': 'createQueries',
10+
'useInfiniteQuery': 'createInfiniteQuery',
11+
'useMutation[(]': 'createMutation(() => ',
12+
'useQuery[(]': 'createQuery(() => ',
13+
'useQueries[(]': 'createQueries(() => ',
14+
'useInfiniteQuery[(]': 'createInfiniteQuery(() => ',
15+
}
16+
---
17+
18+
[//]: # 'Example'
19+
20+
```svelte
21+
<script lang="ts">
22+
import { createQuery } from '@tanstack/svelte-query'
23+
24+
// Make a specific query retry a certain number of times
25+
const result = createQuery(() => ({
26+
queryKey: ['todos', 1],
27+
queryFn: fetchTodoListPage,
28+
retry: 10, // Will retry failed requests 10 times before displaying an error
29+
}))
30+
</script>
31+
```
32+
33+
[//]: # 'Example'
34+
[//]: # 'Example2'
35+
36+
```svelte
37+
<script lang="ts">
38+
// Configure for all queries
39+
import { QueryClient, QueryClientProvider } from '@tanstack/svelte-query'
40+
41+
const queryClient = new QueryClient({
42+
defaultOptions: {
43+
queries: {
44+
retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000),
45+
},
46+
},
47+
})
48+
</script>
49+
50+
<QueryClientProvider client={queryClient}>...</QueryClientProvider>
51+
```
52+
53+
[//]: # 'Example2'
54+
[//]: # 'Example3'
55+
56+
```svelte
57+
<script lang="ts">
58+
import { createQuery } from '@tanstack/svelte-query'
59+
60+
const result = createQuery(() => ({
61+
queryKey: ['todos'],
62+
queryFn: fetchTodoList,
63+
retryDelay: 1000, // Will always wait 1000ms to retry, regardless of how many retries
64+
}))
65+
</script>
66+
```
67+
68+
[//]: # 'Example3'
69+
[//]: # 'Example4'
70+
71+
```svelte
72+
<script lang="ts">
73+
import { createQuery } from '@tanstack/svelte-query'
74+
75+
const result = createQuery(() => ({
76+
queryKey: ['todos'],
77+
queryFn: fetchTodos,
78+
refetchInterval: (query) => {
79+
// Refetch more frequently when in error state
80+
return query.state.status === 'error' ? 5000 : 30000
81+
},
82+
refetchIntervalInBackground: true,
83+
retry: false, // Disable built-in retries
84+
}))
85+
</script>
86+
```
87+
88+
[//]: # 'Example4'

0 commit comments

Comments
 (0)