Skip to content

Commit 931d98d

Browse files
sungpakschosunghoon
andauthored
fix(react-query): Allow optional initialData object in queryOptions (TanStack#8162)
* fix(react-query): Allow optional initialData in infiniteQueryoptions * fix(react-query): Allow optional initialData object in queryOptions * refactor(react-query): removed unnecessary lines in infiniteQueryOptions test --------- Co-authored-by: chosunghoon <[email protected]>
1 parent 6469385 commit 931d98d

File tree

4 files changed

+24
-6
lines changed

4 files changed

+24
-6
lines changed

packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,12 @@ describe('infiniteQueryOptions', () => {
158158
const queryOptions = infiniteQueryOptions({
159159
queryKey: ['example'],
160160
queryFn: async () => initialData,
161-
// initialData below errors
162161
initialData: initialData
163162
? () => ({ pages: [initialData], pageParams: [] })
164163
: undefined,
165164
getNextPageParam: () => 1,
166165
initialPageParam: 1,
167166
})
168-
queryOptions.initialData
169167
expectTypeOf(queryOptions.initialData).toMatchTypeOf<
170168
| InitialDataFunction<InfiniteData<{ example: boolean }, number>>
171169
| InfiniteData<{ example: boolean }, number>
@@ -178,14 +176,12 @@ describe('infiniteQueryOptions', () => {
178176
const queryOptions = infiniteQueryOptions({
179177
queryKey: ['example'],
180178
queryFn: async () => initialData,
181-
// initialData below errors
182179
initialData: initialData
183180
? { pages: [initialData], pageParams: [] }
184181
: undefined,
185182
getNextPageParam: () => 1,
186183
initialPageParam: 1,
187184
})
188-
queryOptions.initialData
189185
expectTypeOf(queryOptions.initialData).toMatchTypeOf<
190186
| InitialDataFunction<InfiniteData<{ example: boolean }, number>>
191187
| InfiniteData<{ example: boolean }, number>

packages/react-query/src/__tests__/queryOptions.test-d.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ import { queryOptions } from '../queryOptions'
99
import { useQuery } from '../useQuery'
1010
import { useQueries } from '../useQueries'
1111
import { useSuspenseQuery } from '../useSuspenseQuery'
12-
import type { QueryObserverResult } from '@tanstack/query-core'
12+
import type {
13+
InitialDataFunction,
14+
QueryObserverResult,
15+
} from '@tanstack/query-core'
1316

1417
describe('queryOptions', () => {
1518
it('should not allow excess properties', () => {
@@ -205,4 +208,19 @@ describe('queryOptions', () => {
205208
},
206209
})
207210
})
211+
212+
it('should allow optional initialData object', () => {
213+
const testFn = (id?: string) => {
214+
const options = queryOptions({
215+
queryKey: ['test'],
216+
queryFn: async () => 'something string',
217+
initialData: id ? 'initial string' : undefined,
218+
})
219+
expectTypeOf(options.initialData).toMatchTypeOf<
220+
InitialDataFunction<string> | string | undefined
221+
>()
222+
}
223+
testFn('id')
224+
testFn()
225+
})
208226
})

packages/react-query/src/infiniteQueryOptions.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export type DefinedInitialDataInfiniteOptions<
4848
initialData:
4949
| NonUndefinedGuard<InfiniteData<TQueryFnData, TPageParam>>
5050
| (() => NonUndefinedGuard<InfiniteData<TQueryFnData, TPageParam>>)
51+
| undefined
5152
}
5253

5354
export function infiniteQueryOptions<

packages/react-query/src/queryOptions.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ export type UndefinedInitialDataOptions<
1212
TData = TQueryFnData,
1313
TQueryKey extends QueryKey = QueryKey,
1414
> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
15-
initialData?: undefined | InitialDataFunction<NonUndefinedGuard<TQueryFnData>>
15+
initialData?:
16+
| undefined
17+
| InitialDataFunction<NonUndefinedGuard<TQueryFnData>>
18+
| NonUndefinedGuard<TQueryFnData>
1619
}
1720

1821
type NonUndefinedGuard<T> = T extends undefined ? never : T

0 commit comments

Comments
 (0)