Skip to content

Commit 4795722

Browse files
committed
fix: using deferred queries on extended loaders
1 parent df0e793 commit 4795722

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

src/createLoader.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export const createLoader = <
7272
Ab = A
7373
>({
7474
queries,
75+
deferredQueries,
7576
transform,
7677
...loaderArgs
7778
}: Partial<
@@ -86,6 +87,7 @@ export const createLoader = <
8687
const newUseLoader = createUseLoader({
8788
queries,
8889
transform,
90+
deferredQueries,
8991
});
9092
extendedLoader.useLoader = newUseLoader;
9193
}

testing-app/src/tests.test.tsx

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,5 +347,48 @@ describe("withLoader", () => {
347347
expect(screen.getByText(/charizard/i)).toBeVisible();
348348
expect(screen.getByText(/pikachu/i)).toBeVisible();
349349
});
350+
351+
test("Can extend deferred queries", async () => {
352+
const Component = withLoader(
353+
(props, { charizard, delay }) => {
354+
return (
355+
<>
356+
<div>{charizard.name}</div>
357+
<div>
358+
{delay ? "loaded-deferred" : "loading-deferred"}
359+
</div>
360+
</>
361+
);
362+
},
363+
createLoader({
364+
queries: () =>
365+
[useGetPokemonsQuery(undefined)] as const,
366+
deferredQueries: () =>
367+
[useGetPokemonByNameQuery("charizard")] as const,
368+
}).extend({
369+
queries: () =>
370+
[useGetPokemonByNameQuery("charizard")] as const,
371+
deferredQueries: () => {
372+
const delayQ = useGetPokemonByNameQuery("delay");
373+
return [delayQ] as const;
374+
},
375+
transform: (queries, deferred) => ({
376+
charizard: queries[0].data,
377+
delay: deferred[0].data,
378+
}),
379+
onLoading: () => <div>Loading</div>,
380+
onError: () => <div>Error</div>,
381+
})
382+
);
383+
render(<Component />);
384+
expect(screen.getByText("Loading")).toBeVisible();
385+
await waitFor(() =>
386+
expect(screen.getByText("charizard")).toBeVisible()
387+
);
388+
expect(screen.getByText("loading-deferred")).toBeVisible();
389+
await waitFor(() =>
390+
expect(screen.getByText("loaded-deferred")).toBeVisible()
391+
);
392+
});
350393
});
351394
});

0 commit comments

Comments
 (0)