@@ -2052,13 +2052,25 @@ export function buildHooks<Definitions extends EndpointDefinitions>({
20522052
20532053 usePromiseRefUnsubscribeOnUnmount ( promiseRef )
20542054
2055+ const stableArg = useStableQueryArgs (
2056+ options . skip ? skipToken : arg ,
2057+ // Even if the user provided a per-endpoint `serializeQueryArgs` with
2058+ // a consistent return value, _here_ we want to use the default behavior
2059+ // so we can tell if _anything_ actually changed. Otherwise, we can end up
2060+ // with a case where the query args did change but the serialization doesn't,
2061+ // and then we never try to initiate a refetch.
2062+ defaultSerializeQueryArgs ,
2063+ context . endpointDefinitions [ endpointName ] ,
2064+ endpointName ,
2065+ )
2066+
20552067 return useMemo ( ( ) => {
20562068 const fetchNextPage = ( ) => {
2057- return trigger ( arg , 'forward' )
2069+ return trigger ( stableArg , 'forward' )
20582070 }
20592071
20602072 const fetchPreviousPage = ( ) => {
2061- return trigger ( arg , 'backward' )
2073+ return trigger ( stableArg , 'backward' )
20622074 }
20632075
20642076 return {
@@ -2070,7 +2082,7 @@ export function buildHooks<Definitions extends EndpointDefinitions>({
20702082 fetchNextPage,
20712083 fetchPreviousPage,
20722084 }
2073- } , [ promiseRef , trigger , arg ] )
2085+ } , [ promiseRef , trigger , stableArg ] )
20742086 }
20752087
20762088 const useInfiniteQueryState : UseInfiniteQueryState < any > =
0 commit comments