diff --git a/src/infiniteQuery/useInfiniteQuery.ts b/src/infiniteQuery/useInfiniteQuery.ts index 047a838..0b3a362 100644 --- a/src/infiniteQuery/useInfiniteQuery.ts +++ b/src/infiniteQuery/useInfiniteQuery.ts @@ -83,7 +83,7 @@ export default function useInfiniteQuery>): void { - observer.setOptions({ ...observer.options, ...options }) + observer.updateOptions(options) } function setEnabled(enabled: boolean): void { diff --git a/src/query/useQuery.ts b/src/query/useQuery.ts index 1591ebd..44e92c3 100644 --- a/src/query/useQuery.ts +++ b/src/query/useQuery.ts @@ -79,7 +79,7 @@ export default function useQuery>): void { - observer.setOptions({ ...observer.options, ...options }) + observer.updateOptions(options) } function setEnabled(enabled: boolean): void { diff --git a/src/queryCore/core/queryObserver.ts b/src/queryCore/core/queryObserver.ts index 8eb005f..4c794d5 100644 --- a/src/queryCore/core/queryObserver.ts +++ b/src/queryCore/core/queryObserver.ts @@ -1,4 +1,5 @@ import { + hashQueryKeyByOptions, isServer, isValidTimeout, noop, @@ -196,6 +197,25 @@ export class QueryObserver< } } + updateOptions( + options?: Partial>, + notifyOptions?: NotifyOptions + ): void { + const mergedOptions = { ...this.options, ...options } + + if (options.queryKey && !options.queryHash && options.queryKey !== this.options.queryKey) { + mergedOptions.queryHash = hashQueryKeyByOptions(options.queryKey, mergedOptions) + } + + this.setOptions(mergedOptions, notifyOptions) + } + getOptimisticResult( options: QueryObserverOptions< TQueryFnData,