Skip to content

Commit 509050d

Browse files
committed
feat: useCreateLoader
chore: added example to alt libs in docs chore: added more exports from local types
1 parent 250790d commit 509050d

File tree

4 files changed

+49
-3
lines changed

4 files changed

+49
-3
lines changed

docs/docs/Features/other-libs.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ Although `rtk-query-loader` was build with `@reduxjs/toolkit` in mind, the under
1212

1313
## Tanstack Query
1414

15+
[See example on CodeSandbox](https://codesandbox.io/s/tanstack-query-rtk-query-loader-example-6393w2)
16+
1517
```typescript
1618
import {
1719
useQuery,

src/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ export type {
77
ComponentWithLoaderData,
88
ConsumerProps,
99
CreateUseLoaderArgs,
10+
CreateLoaderArgs,
11+
DeferredConfig,
12+
LoaderConfig,
13+
_TDeferred,
14+
_TPayload,
15+
_TQueries,
16+
_TProps,
17+
_TReturn,
18+
MakeDataRequired,
1019
CustomLoaderProps,
1120
DataShapeInput,
1221
InferLoaderData,
@@ -19,3 +28,4 @@ export type {
1928
} from "./types";
2029
export { withLoader } from "./withLoader";
2130
export { AwaitLoader } from "./AwaitLoader";
31+
export { useCreateLoader } from "./useCreateLoader";

src/types.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,12 @@ export type CreateUseLoaderArgs<
155155
...args: OptionalGenericArg<TArg>
156156
) => DataShapeInput<TQueries, TDeferred, TPayload>;
157157
/** Transforms the output of the queries */
158-
transform?: (
159-
data: ResolveLoadedDataShape<TQueries, TDeferred, TPayload>
160-
) => TReturn;
158+
transform?: LoaderTransformFunction<
159+
TQueries,
160+
TDeferred,
161+
TPayload,
162+
TReturn
163+
>;
161164
config?: LoaderConfig;
162165
};
163166

src/useCreateLoader.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import * as React from "react";
2+
import * as Types from "./types";
3+
import { createLoader } from "./createLoader";
4+
5+
/**
6+
* Allows you to create a loader inside of a component.
7+
* This is useful if you want to create a loader for use with `AwaitLoader`, scoped to a component.
8+
*/
9+
export const useCreateLoader = <
10+
TProps extends unknown,
11+
TQueries extends Types._TQueries,
12+
TDeferred extends Types._TDeferred,
13+
TPayload extends Types._TPayload,
14+
TReturn extends unknown = Types.ResolveDataShape<
15+
Types.MakeDataRequired<TQueries>,
16+
TDeferred,
17+
TPayload
18+
>,
19+
TArg extends unknown = never
20+
>(
21+
createLoaderArgs: Types.CreateLoaderArgs<
22+
TProps,
23+
TQueries,
24+
TDeferred,
25+
TPayload,
26+
TReturn,
27+
TArg
28+
>
29+
) => {
30+
return React.useRef(createLoader(createLoaderArgs)).current;
31+
};

0 commit comments

Comments
 (0)