Skip to content

Commit 9739ce1

Browse files
committed
Add query key prop
1 parent 5070060 commit 9739ce1

File tree

5 files changed

+43
-10
lines changed

5 files changed

+43
-10
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"changes":{"packages/react-query/package.json":"Patch"},"note":"Add query key prop","date":"2026-02-24T07:16:01.813633Z"}

packages/react-query/src/__tests__/index.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ test('index.ts exports', () => {
77
expect({ ...indexModule }).toEqual({
88
createQueryClient: expect.any(Function),
99
DevupQueryClient: expect.any(Function),
10+
getQueryKey: expect.any(Function),
1011
})
1112
})

packages/react-query/src/__tests__/query-client.test.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ test('DevupQueryClient useQuery with GET method', async () => {
5353
)
5454

5555
expect(result.current.data).toEqual({ id: 1, name: 'test' })
56+
expect(result.current.queryKey).toEqual(['get', '/test'])
5657
})
5758

5859
test('DevupQueryClient useQuery with options', async () => {
@@ -75,6 +76,11 @@ test('DevupQueryClient useQuery with options', async () => {
7576
)
7677

7778
expect(result.current.data).toEqual({ id: 1, name: 'test' })
79+
expect(result.current.queryKey).toEqual([
80+
'get',
81+
'/test',
82+
{ params: { id: '123' } },
83+
])
7884
})
7985

8086
test('DevupQueryClient useQuery with queryOptions', async () => {
@@ -97,6 +103,7 @@ test('DevupQueryClient useQuery with queryOptions', async () => {
97103
)
98104

99105
expect(result.current.data).toEqual({ id: 1, name: 'test' })
106+
expect(result.current.queryKey).toEqual(['get', '/test'])
100107
})
101108

102109
test('DevupQueryClient useMutation with POST method', async () => {
@@ -176,6 +183,7 @@ test('DevupQueryClient useSuspenseQuery with GET method', async () => {
176183
)
177184

178185
expect(result.current.data).toEqual({ id: 1, name: 'test' })
186+
expect(result.current.queryKey).toEqual(['get', '/test'])
179187
})
180188

181189
test('DevupQueryClient useSuspenseQuery with options', async () => {
@@ -198,6 +206,11 @@ test('DevupQueryClient useSuspenseQuery with options', async () => {
198206
)
199207

200208
expect(result.current.data).toEqual({ id: 1, name: 'test' })
209+
expect(result.current.queryKey).toEqual([
210+
'get',
211+
'/test',
212+
{ params: { id: '123' } },
213+
])
201214
})
202215

203216
test('DevupQueryClient useInfiniteQuery with GET method', async () => {
@@ -224,6 +237,7 @@ test('DevupQueryClient useInfiniteQuery with GET method', async () => {
224237
pages: [{ id: 1, name: 'test' }],
225238
pageParams: [1],
226239
})
240+
expect(result.current.queryKey).toEqual(['get', '/test', {}])
227241
})
228242

229243
test('DevupQueryClient useInfiniteQuery with options', async () => {
@@ -251,6 +265,11 @@ test('DevupQueryClient useInfiniteQuery with options', async () => {
251265
pages: [{ id: 1, name: 'test' }],
252266
pageParams: [1],
253267
})
268+
expect(result.current.queryKey).toEqual([
269+
'get',
270+
'/test',
271+
{ query: { page: 1 } },
272+
])
254273
})
255274

256275
test('DevupQueryClient useQuery with different HTTP methods', async () => {

packages/react-query/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export { createQueryClient } from './create-query-client'
2-
export { DevupQueryClient } from './query-client'
2+
export { DevupQueryClient, getQueryKey } from './query-client'

packages/react-query/src/query-client.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,13 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
5656
queryClient?: Parameters<typeof useQuery<D, E>>[1],
5757
]
5858
>
59-
): ReturnType<typeof useQuery<D, E>> {
60-
return useQuery<D, E>(
59+
): ReturnType<typeof useQuery<D, E>> & {
60+
queryKey: [M, T, ...unknown[]]
61+
} {
62+
const queryKey = getQueryKey(method, path, options[0])
63+
const result = useQuery<D, E>(
6164
{
62-
queryKey: getQueryKey(method, path, options[0]),
65+
queryKey,
6366
queryFn: ({
6467
queryKey: [method, path, ...options],
6568
signal,
@@ -78,6 +81,7 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
7881
},
7982
options[2],
8083
)
84+
return Object.assign(result, { queryKey })
8185
}
8286

8387
useMutation<
@@ -134,10 +138,13 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
134138
queryClient?: Parameters<typeof useSuspenseQuery<D, E>>[1],
135139
]
136140
>
137-
): ReturnType<typeof useSuspenseQuery<D, E>> {
138-
return useSuspenseQuery<D, E, D>(
141+
): ReturnType<typeof useSuspenseQuery<D, E>> & {
142+
queryKey: [M, T, ...unknown[]]
143+
} {
144+
const queryKey = getQueryKey(method, path, options[0])
145+
const result = useSuspenseQuery<D, E, D>(
139146
{
140-
queryKey: getQueryKey(method, path, options[0]),
147+
queryKey,
141148
queryFn: ({
142149
queryKey: [method, path, ...options],
143150
signal,
@@ -156,6 +163,7 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
156163
},
157164
options[2],
158165
)
166+
return Object.assign(result, { queryKey })
159167
}
160168

161169
useInfiniteQuery<
@@ -180,13 +188,16 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
180188
>,
181189
queryClient?: Parameters<typeof useInfiniteQuery<D, E>>[1],
182190
]
183-
): ReturnType<typeof useInfiniteQuery<D, E>> {
191+
): ReturnType<typeof useInfiniteQuery<D, E>> & {
192+
queryKey: [M, T, ...unknown[]]
193+
} {
184194
const { getNextPageParam, initialPageParam, ...apiOptions } = options[0]
185-
return useInfiniteQuery<D, E>(
195+
const queryKey = getQueryKey(method, path, apiOptions)
196+
const result = useInfiniteQuery<D, E>(
186197
{
187198
getNextPageParam,
188199
initialPageParam,
189-
queryKey: getQueryKey(method, path, apiOptions),
200+
queryKey,
190201
queryFn: ({ queryKey, pageParam, signal }): Promise<D> => {
191202
const [methodKey, pathKey, ...restOptions] = queryKey
192203
const apiOptions = restOptions[0] as DevupApiRequestInit | undefined
@@ -212,6 +223,7 @@ export class DevupQueryClient<S extends ConditionalKeys<DevupApiServers>> {
212223
} as Parameters<typeof useInfiniteQuery<D, E>>[0],
213224
options[2],
214225
)
226+
return Object.assign(result, { queryKey })
215227
}
216228

217229
useQueries<

0 commit comments

Comments
 (0)