File tree Expand file tree Collapse file tree 2 files changed +35
-1
lines changed Expand file tree Collapse file tree 2 files changed +35
-1
lines changed Original file line number Diff line number Diff 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 ,
Original file line number Diff line number Diff 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 /> ) ;
You can’t perform that action at this time.
0 commit comments