From a6faf8367795681f620911775c849483c7acb1fe Mon Sep 17 00:00:00 2001 From: jxom Date: Wed, 9 Oct 2024 10:21:31 +1100 Subject: [PATCH 1/2] fix: queryKeyHashFn --- .../src/__tests__/useQuery.test.tsx | 23 +++++++++++++++++++ packages/react-query/src/useBaseQuery.ts | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/react-query/src/__tests__/useQuery.test.tsx b/packages/react-query/src/__tests__/useQuery.test.tsx index cbe64c69fea..491970764c4 100644 --- a/packages/react-query/src/__tests__/useQuery.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.test.tsx @@ -4971,6 +4971,29 @@ describe('useQuery', () => { expect(renders).toBe(hashes) }) + it('should hash query keys that contain bigints given a supported query hash function', async () => { + const key = [queryKey(), 1n] + + function queryKeyHashFn(x: any) { + return JSON.stringify(x, (_, value) => { + if (typeof value === 'bigint') return value.toString() + return value + }) + } + + function Page() { + useQuery({ queryKey: key, queryFn: () => 'test', queryKeyHashFn }) + return null + } + + renderWithClient(queryClient, ) + + await sleep(10) + + const query = queryClient.getQueryCache().get(queryKeyHashFn(key)) + expect(query?.state.data).toBe('test') + }) + it('should refetch when changed enabled to true in error state', async () => { const queryFn = vi.fn<(...args: Array) => unknown>() queryFn.mockImplementation(async () => { diff --git a/packages/react-query/src/useBaseQuery.ts b/packages/react-query/src/useBaseQuery.ts index 32162bc87d8..f8953176cf5 100644 --- a/packages/react-query/src/useBaseQuery.ts +++ b/packages/react-query/src/useBaseQuery.ts @@ -70,7 +70,7 @@ export function useBaseQuery< useClearResetErrorBoundary(errorResetBoundary) // this needs to be invoked before creating the Observer because that can create a cache entry - const isNewCacheEntry = !client.getQueryState(options.queryKey) + const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash) const [observer] = React.useState( () => From 81ff334fd6060d3eabecd55340a3a68a08d105be Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 23:23:13 +0000 Subject: [PATCH 2/2] ci: apply automated fixes --- packages/react-query/src/useBaseQuery.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/react-query/src/useBaseQuery.ts b/packages/react-query/src/useBaseQuery.ts index f8953176cf5..9ae2aefda6a 100644 --- a/packages/react-query/src/useBaseQuery.ts +++ b/packages/react-query/src/useBaseQuery.ts @@ -70,7 +70,9 @@ export function useBaseQuery< useClearResetErrorBoundary(errorResetBoundary) // this needs to be invoked before creating the Observer because that can create a cache entry - const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash) + const isNewCacheEntry = !client + .getQueryCache() + .get(defaultedOptions.queryHash) const [observer] = React.useState( () =>