diff --git a/packages/react-query/src/__tests__/ssr.test.tsx b/packages/react-query/src/__tests__/ssr.test.tsx index 0affe883fe..92f927efb3 100644 --- a/packages/react-query/src/__tests__/ssr.test.tsx +++ b/packages/react-query/src/__tests__/ssr.test.tsx @@ -8,6 +8,7 @@ import { QueryClientProvider, useInfiniteQuery, useIsFetching, + useQueries, useQuery, } from '..' import { setIsServer } from './utils' @@ -205,4 +206,46 @@ describe('Server Side Rendering', () => { queryCache.clear() }) + + it('useQueries should return existing data from the cache', async () => { + const key1 = queryKey() + const key2 = queryKey() + const queryFn1 = () => sleep(10).then(() => 'data1') + const queryFn2 = () => sleep(10).then(() => 'data2') + + function Page() { + const queries = useQueries({ + queries: [ + { queryKey: key1, queryFn: queryFn1 }, + { queryKey: key2, queryFn: queryFn2 }, + ], + }) + + return ( +
+
{`status1: ${queries[0].status}`}
+
{`status2: ${queries[1].status}`}
+
{`data1: ${queries[0].data}`}
+
{`data2: ${queries[1].data}`}
+
+ ) + } + + queryClient.prefetchQuery({ queryKey: key1, queryFn: queryFn1 }) + queryClient.prefetchQuery({ queryKey: key2, queryFn: queryFn2 }) + await vi.advanceTimersByTimeAsync(10) + + const markup = renderToString( + + + , + ) + + expect(markup).toContain('status1: success') + expect(markup).toContain('status2: success') + expect(markup).toContain('data1: data1') + expect(markup).toContain('data2: data2') + + queryCache.clear() + }) })