@@ -115,6 +115,7 @@ function createUseRevalidate<
115
115
function createUseMutate <
116
116
T ,
117
117
TData extends Record < keyof T , any > ,
118
+ TError extends Record < keyof T , any > ,
118
119
TVariables extends Record < keyof T , any >
119
120
> ( ctx : React . Context < ApiContext < T > > ) {
120
121
return function useMutate ( ) {
@@ -124,11 +125,11 @@ function createUseMutate<
124
125
K extends keyof T ,
125
126
TApiData extends TData [ K ] ,
126
127
TApiVariables extends TVariables [ K ]
127
- > ( key :K , variables : TApiVariables , callback : ( prevData : TApiData ) => TApiData ) {
128
+ > ( key :K , variables : TApiVariables , callback : ( prevData : TApiData | null | undefined ) => TApiData | null | undefined ) {
128
129
const cacheKey = generateCacheKey ( key , variables )
129
- const cacheData = cache . get ( cacheKey ) as TApiData
130
- const data = callback ( cacheData )
131
- cache . set ( cacheKey , data )
130
+ const cacheData = cache . get ( cacheKey ) as ApiResult < TApiData , TError [ K ] >
131
+ const data = callback ( cacheData . data )
132
+ cache . set ( cacheKey , { ... cacheData , data } )
132
133
return data
133
134
} , [ cache ] )
134
135
@@ -158,7 +159,7 @@ interface OnCompletedParams<
158
159
X extends keyof T ,
159
160
TApiData extends TData [ X ] ,
160
161
TApiVariables extends TVariables [ X ]
161
- > ( key : X , variables : TApiVariables , callback : ( prevData : TApiData ) => TApiData ) => TApiData
162
+ > ( key : X , variables : TApiVariables , callback : ( prevData : TApiData | null | undefined ) => TApiData | null | undefined ) => TApiData | null | undefined
162
163
}
163
164
164
165
export interface UseLazyApiOptions <
@@ -182,7 +183,7 @@ function createUseLazyApi<
182
183
TVariables extends Record < keyof T , any >
183
184
> ( ctx : React . Context < ApiContext < T > > , apis : T ) {
184
185
const useRevalidate = createUseRevalidate < T , TData , TError , TVariables > ( ctx , apis )
185
- const useMutate = createUseMutate < T , TData , TVariables > ( ctx )
186
+ const useMutate = createUseMutate < T , TData , TError , TVariables > ( ctx )
186
187
187
188
return function useLazyApi <
188
189
K extends keyof T ,
@@ -371,7 +372,7 @@ function createUseApi<
371
372
372
373
return {
373
374
...result ,
374
- loading : loadingRef . current ,
375
+ loading : result . loading || loadingRef . current ,
375
376
called : calledRef . current
376
377
}
377
378
}
0 commit comments