Skip to content

Commit 001edfd

Browse files
committed
chore: Loaders with no queries now load immediately
1 parent 70f7a47 commit 001edfd

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

src/createLoader.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ export const createUseLoader = <
1616
createUseLoaderArgs.deferredQueries?.(...args) ?? [];
1717
const aggregatedQuery = aggregateToQuery(createdQueries);
1818

19-
if (aggregatedQuery.isSuccess) {
19+
if (
20+
aggregatedQuery.isSuccess ||
21+
createdQueries.length === 0
22+
) {
2023
const data = createUseLoaderArgs.transform
2124
? createUseLoaderArgs.transform(
2225
createdQueries as unknown as Types.MakeDataRequired<QRU>,
@@ -26,6 +29,7 @@ export const createUseLoader = <
2629

2730
return {
2831
...aggregatedQuery,
32+
isSuccess: true,
2933
data,
3034
currentData: data,
3135
originalArgs: args,

testing-app/src/tests.test.tsx

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,36 @@ describe("withLoader", () => {
252252
);
253253
});
254254

255+
test("Can defer all queries", async () => {
256+
const Component = withLoader(
257+
(props, data) => {
258+
if (data[0].isLoading) {
259+
return <>Loading</>;
260+
}
261+
return <>{data[0].data?.name}</>;
262+
},
263+
createLoader({
264+
deferredQueries: () =>
265+
[useGetPokemonByNameQuery("charizard")] as const,
266+
transform: (_, deferred) => deferred,
267+
})
268+
);
269+
render(<Component />);
270+
expect(screen.getByText("Loading")).toBeVisible();
271+
await waitFor(() =>
272+
expect(screen.getByText("charizard")).toBeVisible()
273+
);
274+
});
275+
276+
test("Loaders with no queries render immediately", () => {
277+
const Component = withLoader(
278+
() => <div>Success</div>,
279+
createLoader({})
280+
);
281+
render(<Component />);
282+
expect(screen.getByText("Success")).toBeVisible();
283+
});
284+
255285
describe(".extend()", () => {
256286
test("Can extend onLoading", async () => {
257287
render(<ExtendedLoaderComponent />);

0 commit comments

Comments
 (0)