Skip to content

Commit b7e50ad

Browse files
gwansikkmanudeli
andauthored
docs(suspensive-react-query): add content about queryOptions (#7678)
* docs(suspensive-react-query): add content about queryOptions Co-authored-by: Jonghyeon Ko <[email protected]> * fix(ci): pnpm/[email protected] Co-authored-by: Jonghyeon Ko <[email protected]> * fix(ci): update pnpm/action-setup version Co-authored-by: Jonghyeon Ko <[email protected]> * fix(ci): update pnpm/action-setup version Co-authored-by: Jonghyeon Ko <[email protected]> * docs(suspensive-react-query): update content about queryOptions * docs(suspensive-react-query): update content about queryOptions Co-authored-by: Jonghyeon Ko <[email protected]> --------- Co-authored-by: Jonghyeon Ko <[email protected]>
1 parent f1ec2ca commit b7e50ad

File tree

3 files changed

+52
-8
lines changed

3 files changed

+52
-8
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
- uses: actions/checkout@v3
3232
with:
3333
fetch-depth: '0'
34-
- uses: pnpm/action-setup@v2.2.4
34+
- uses: pnpm/action-setup@v2.4.1
3535
with:
3636
version: 8
3737
- uses: actions/setup-node@v3

.github/workflows/pr.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
with:
2222
fetch-depth: 0
2323
- name: Setup pnpm
24-
uses: pnpm/action-setup@v2.2.4
24+
uses: pnpm/action-setup@v2.4.1
2525
with:
2626
version: 8
2727
- name: Setup Node
@@ -63,7 +63,7 @@ jobs:
6363
with:
6464
fetch-depth: 0
6565
- name: Setup pnpm
66-
uses: pnpm/action-setup@v2.2.4
66+
uses: pnpm/action-setup@v2.4.1
6767
with:
6868
version: 8
6969
- name: Setup Node
@@ -84,7 +84,7 @@ jobs:
8484
with:
8585
fetch-depth: 0
8686
- name: Setup pnpm
87-
uses: pnpm/action-setup@v2.2.4
87+
uses: pnpm/action-setup@v2.4.1
8888
with:
8989
version: 8
9090
- name: Setup Node
@@ -106,7 +106,7 @@ jobs:
106106
fetch-depth: 0
107107
ref: ${{ github.head_ref }}
108108
repository: ${{github.event.pull_request.head.repo.full_name}}
109-
- uses: pnpm/action-setup@v2.2.4
109+
- uses: pnpm/action-setup@v2.4.1
110110
with:
111111
version: 8
112112
- uses: actions/setup-node@v3

docs/framework/react/community/suspensive-react-query.md

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,56 @@ const Example = () => {
7272

7373
Now, we can concentrate component as any fetching will be always success in component.
7474

75-
### useSuspenseQuery is Official API now! (from v5)
75+
## queryOptions
7676

77-
@suspensive/react-query provides not only [useSuspenseQuery](https://suspensive.org/docs/react-query/useSuspenseQuery), also [useSuspenseQueries](https://suspensive.org/docs/react-query/useSuspenseQueries), [useSuspenseInfiniteQuery](https://suspensive.org/docs/react-query/useSuspenseInfiniteQuery). From @tanstack/react-query v5 provides [official public hook apis for suspense](https://tanstack.com/query/v5/docs/react/guides/suspense) like @suspensive/react-query's hooks. If want to use them early in v4, use this @suspensive/react-query first.
77+
Tkdodo, The maintainer of TanStack Query explains well why this interface is needed in [video explaining queryOptions in TanStack Query v5](https://youtu.be/bhE3wuB_TuA?feature=shared&t=1697).
78+
You can also use queryOptions in TanStack Query v4.
7879

79-
Check the complete documentation on [Suspensive Official Docs Site](https://suspensive.org/) and also welcome Pull Request on [Suspensive GitHub](https://github.com/suspensive/react)
80+
1. QueryKey management becomes easier by processing queryKey and queryFn together.
81+
2. You can remove unnecessary custom query hooks. This is because they can all be used directly in `useQuery`, `useQueries` of TanStack Query v4.
82+
3. TanStack Query v5 already supports queryOptions. This Suspensive React Query's `queryOptions` will make migration from TanStack Query v4 to TanStack Query v5 easier.
8083

84+
```tsx
85+
import { queryOptions } from '@suspensive/react-query'
86+
import { useQuery, useQueries, useQueryClient } from '@tanstack/react-query'
87+
88+
const postQueryOptions = (postId) =>
89+
queryOptions({
90+
queryKey: ['posts', postId] as const,
91+
queryFn: ({
92+
queryKey: [, postId], // You can use queryKey.
93+
}) => fetch(`https://example.com/posts/${postId}`),
94+
})
95+
96+
// No need to create custom query hooks.
97+
// You can use queryOptions directly in useQuery, useQueries.
98+
const post1Query = useQuery(postQueryOptions(1))
99+
100+
const [post1Query, post2Query] = useQueries({
101+
queries: [
102+
postQueryOptions(1),
103+
{ ...postQueryOptions(2), refetchInterval: 2000 },
104+
],
105+
})
106+
107+
// You can easily use queryKey and queryFn in queryClient's methods.
108+
const queryClient = useQueryClient()
109+
queryClient.refetchQueries(postQueryOptions(1))
110+
queryClient.prefetchQuery(postQueryOptions(1))
111+
queryClient.invalidateQueries(postQueryOptions(1))
112+
queryClient.fetchQuery(postQueryOptions(1))
113+
queryClient.resetQueries(postQueryOptions(1))
114+
queryClient.cancelQueries(postQueryOptions(1))
115+
```
81116

117+
### Using queryOptions in TanStack Query v4
82118

119+
> "One of the best ways to share queryKey and queryFn between multiple places, yet keep them co-located to one another, is to use the queryOptions helper." For more details, you can refer to the [TanStack Query v5 Official Docs - Query Options](https://tanstack.com/query/v5/docs/framework/react/guides/query-options).
83120
121+
You can use queryOptions in TanStack Query v4 just like in TanStack Query v5, and it is fully compatible with the TanStack Query v4 API.
122+
123+
### useSuspenseQuery is Official API now! (from v5)
124+
125+
@suspensive/react-query provides not only [useSuspenseQuery](https://suspensive.org/docs/react-query/useSuspenseQuery), also [useSuspenseQueries](https://suspensive.org/docs/react-query/useSuspenseQueries), [useSuspenseInfiniteQuery](https://suspensive.org/docs/react-query/useSuspenseInfiniteQuery). From @tanstack/react-query v5 provides [official public hook apis for suspense](https://tanstack.com/query/v5/docs/react/guides/suspense) like @suspensive/react-query's hooks. If want to use them early in v4, use this @suspensive/react-query first.
126+
127+
Check the complete documentation on [Suspensive Official Docs Site](https://suspensive.org/) and also welcome Pull Request on [Suspensive GitHub](https://github.com/suspensive/react)

0 commit comments

Comments
 (0)