-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
feat(react-query): backport v5 apis about infinite query #9334
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: v4
Are you sure you want to change the base?
feat(react-query): backport v5 apis about infinite query #9334
Conversation
View your CI Pipeline Execution ↗ for commit fb2d620
☁️ Nx Cloud last updated this comment at |
5b39d68
to
8e281a9
Compare
91170ba
to
89fb2fb
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR backports infinite query APIs from React Query v5 to provide enhanced infinite query functionality and improve API consistency.
- Added
useSuspenseInfiniteQuery
hook for suspense-based infinite queries with automatic error boundaries - Added
infiniteQueryOptions
function for creating type-safe infinite query configurations - Deprecated multiple function overloads in
useQuery
anduseInfiniteQuery
with improved deprecation messages
Reviewed Changes
Copilot reviewed 14 out of 15 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
packages/react-query/src/useSuspenseInfiniteQuery.ts | New suspense-based infinite query hook implementation |
packages/react-query/src/infiniteQueryOptions.ts | New infinite query options factory function with type definitions |
packages/react-query/src/types.ts | Added new result types for suspense and defined infinite queries |
packages/react-query/src/useQuery.ts | Enhanced deprecation messages for function overloads |
packages/react-query/src/useInfiniteQuery.ts | Added new overload and enhanced deprecation messages |
packages/react-query/src/queryOptions.ts | Updated to omit prohibited v5 keys from options |
packages/react-query/src/index.ts | Exported new functions and types |
packages/react-query/src/tests/* | Comprehensive type and unit tests for new functionality |
packages/query-core/src/types.ts | Cleaned up deprecated comment formatting |
packages/query-core/src/queryClient.ts | Cleaned up deprecated comment formatting |
packages/query-core/src/queryCache.ts | Cleaned up deprecated comment formatting |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (1)
packages/react-query/src/infiniteQueryOptions.ts:22
- The type name
ProhibitedInfiniteQueryOptionsKeyInV5
is inconsistent with the similar type inqueryOptions.ts
which is namedProhibitedQueryOptionsKeyInV5
. Consider renaming toProhibitedQueryOptionsKeyInV5
for consistency.
'useErrorBoundary' | 'suspense'
DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, | ||
OmitKeyof< | ||
DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, | ||
ProhibitedQueryOptionsKeyInV5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The type ProhibitedQueryOptionsKeyInV5
is referenced but not defined in this file. This will cause a TypeScript compilation error.
Copilot uses AI. Check for mistakes.
UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, | ||
OmitKeyof< | ||
UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, | ||
ProhibitedQueryOptionsKeyInV5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The type ProhibitedQueryOptionsKeyInV5
is referenced but not defined in this file. This will cause a TypeScript compilation error.
Copilot uses AI. Check for mistakes.
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. Latest deployment of this branch, based on commit 9aaf337:
|
- Added `infiniteQueryOptions` function to manage infinite query configurations. - Implemented `useSuspenseInfiniteQuery` hook for handling infinite queries with suspense. - Updated types to include `DefinedUseInfiniteQueryResult` and `UseSuspenseInfiniteQueryResult`. - Marked deprecated overloads in `useQuery` and `useInfiniteQuery` for future removal. - Added tests for new infinite query options and suspense functionality.
15a9bcf
to
9aaf337
Compare
…BaseQuery - Replaced the implementation of `useSuspenseInfiniteQuery` to use `useBaseQuery` instead of `useInfiniteQuery`. - Updated return type to reflect the new usage of `InfiniteQueryObserverSuccessResult`.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@TkDodo I left comments with my intentions
export function useInfiniteQuery< | ||
TQueryFnData = unknown, | ||
TError = unknown, | ||
TData = TQueryFnData, | ||
TQueryKey extends QueryKey = QueryKey, | ||
>( | ||
options: UseInfiniteQueryOptions< | ||
TQueryFnData, | ||
TError, | ||
TData, | ||
TQueryFnData, | ||
TQueryKey | ||
> & { | ||
initialData: | ||
| NonUndefinedGuard<InfiniteData<TQueryFnData>> | ||
| (() => NonUndefinedGuard<InfiniteData<TQueryFnData>>) | ||
| undefined | ||
}, | ||
): DefinedUseInfiniteQueryResult<TData, TError> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Another function overload that returns DefinedUseInfiniteQueryResult is added when using initialData.
@tanstack/react-query v5 also support this
export type DefinedUseInfiniteQueryResult< | ||
TData = unknown, | ||
TError = unknown, | ||
> = DefinedInfiniteQueryObserverResult<TData, TError> | ||
|
||
export type UseSuspenseInfiniteQueryResult< | ||
TData = unknown, | ||
TError = unknown, | ||
> = OmitKeyof< | ||
DefinedInfiniteQueryObserverResult<TData, TError>, | ||
'isPlaceholderData' | ||
> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
new types
@@ -24,6 +49,7 @@ export function useInfiniteQuery< | |||
TQueryKey | |||
>, | |||
): UseInfiniteQueryResult<TData, TError> | |||
/** @deprecated This function overload will be removed in the next major version. */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mark some useInfiniteQuery's function overloads as deprecated
New Features and Utilities:
infiniteQueryOptions
useSuspenseInfiniteQuery
DefinedInitialDataInfiniteOptions
, typeUndefinedInitialDataInfiniteOptions
useInfiniteQuery
to returnDefinedUseInfiniteQueryResult
when usinginfiniteData
Deprecations:
useInfiniteQuery
as deprecated, with a note that they will be removed in the next major version. (packages/react-query/src/useInfiniteQuery.ts
)