@@ -10,48 +10,104 @@ import useThrottlePlugin from './plugins/useThrottlePlugin'
10
10
11
11
import useRequestImplement from './useRequestImplement'
12
12
13
- import { UseRequestOptions , UseRequestOptionsWithFormatResult , UseRequestPlugin , useRequestResult , UseRequestService } from './types'
13
+ import {
14
+ UseRequestOptions ,
15
+ UseRequestOptionsWithFormatResult ,
16
+ UseRequestOptionsWithInitialData ,
17
+ UseRequestPlugin ,
18
+ useRequestResult ,
19
+ UseRequestService ,
20
+ } from './types'
14
21
import { withArgs } from './utils/resolve-args'
15
22
23
+ export type PluginsMiddleOptionsType <
24
+ PluginsOptions ,
25
+ TData ,
26
+ TParams extends unknown [ ] = unknown [ ]
27
+ > = PluginsOptions extends ( infer P ) [ ]
28
+ ? P extends UseRequestPlugin < TData , TParams , infer R >
29
+ ? R
30
+ : never
31
+ : never
16
32
17
- // 有 formatResult
33
+ // 同时存在 formatResult 和 initialData
18
34
export function useRequest <
19
35
TData ,
20
36
TParams extends unknown [ ] = unknown [ ] ,
21
37
PluginsOptions extends UseRequestPlugin < TData , TParams > [ ] = UseRequestPlugin < TData , TParams > [ ] ,
22
- SR = any ,
23
- > ( service : UseRequestService < SR , TParams > , options : UseRequestOptionsWithFormatResult < TData , TParams , PluginsOptions extends ( infer P ) [ ]
24
- ? P extends UseRequestPlugin < TData , TParams , infer R >
25
- ? R
26
- : never
27
- : never , SR > , plugins ?: PluginsOptions ) : useRequestResult < TData , TParams >
28
-
38
+ SR = any
39
+ > (
40
+ service : UseRequestService < SR , TParams > ,
41
+ options : UseRequestOptionsWithFormatResult <
42
+ TData ,
43
+ TParams ,
44
+ PluginsMiddleOptionsType < PluginsOptions , TData , TParams > ,
45
+ SR
46
+ > &
47
+ UseRequestOptionsWithInitialData < SR , TParams , PluginsOptions > ,
48
+ plugins ?: PluginsOptions ,
49
+ ) : useRequestResult < TData , TParams >
29
50
30
- // 无 formatResults
51
+ // 只有 formatResult
31
52
export function useRequest <
32
53
TData ,
33
54
TParams extends unknown [ ] = unknown [ ] ,
34
55
PluginsOptions extends UseRequestPlugin < TData , TParams > [ ] = UseRequestPlugin < TData , TParams > [ ] ,
35
- > ( service : UseRequestService < TData , TParams > , options ?: UseRequestOptions < TData , TParams , PluginsOptions extends ( infer P ) [ ]
36
- ? P extends UseRequestPlugin < TData , TParams , infer R >
37
- ? R
38
- : never
39
- : never > , plugins ?: PluginsOptions ) : useRequestResult < TData , TParams >
56
+ SR = any
57
+ > (
58
+ service : UseRequestService < SR , TParams > ,
59
+ options : UseRequestOptionsWithFormatResult <
60
+ TData ,
61
+ TParams ,
62
+ PluginsMiddleOptionsType < PluginsOptions , TData , TParams > ,
63
+ SR
64
+ > ,
65
+ plugins ?: PluginsOptions ,
66
+ ) : useRequestResult < TData , TParams >
40
67
68
+ // 只有 initialData
41
69
export function useRequest <
42
70
TData ,
43
71
TParams extends unknown [ ] = unknown [ ] ,
44
- PluginsOptions extends UseRequestPlugin < TData , TParams > [ ] = UseRequestPlugin < TData , TParams > [ ] ,
72
+ PluginsOptions extends UseRequestPlugin < TData , TParams > [ ] = UseRequestPlugin < TData , TParams > [ ]
45
73
> (
46
74
service : UseRequestService < TData , TParams > ,
47
- options ?: UseRequestOptions < TData , TParams , PluginsOptions extends ( infer P ) [ ]
48
- ? P extends UseRequestPlugin < TData , TParams , infer R >
49
- ? R
50
- : never
51
- : never > ,
75
+ options : UseRequestOptionsWithInitialData <
76
+ TData ,
77
+ TParams ,
78
+ PluginsMiddleOptionsType < PluginsOptions , TData , TParams >
79
+ > ,
52
80
plugins ?: PluginsOptions ,
53
- ) {
81
+ ) : useRequestResult < TData , TParams >
54
82
83
+ // 无 formatResults 和 initialData
84
+ export function useRequest <
85
+ TData ,
86
+ TParams extends unknown [ ] = unknown [ ] ,
87
+ PluginsOptions extends UseRequestPlugin < TData , TParams > [ ] = UseRequestPlugin < TData , TParams > [ ]
88
+ > (
89
+ service : UseRequestService < TData , TParams > ,
90
+ options ?: UseRequestOptions <
91
+ TData ,
92
+ TParams ,
93
+ PluginsMiddleOptionsType < PluginsOptions , TData , TParams >
94
+ > ,
95
+ plugins ?: PluginsOptions ,
96
+ ) : useRequestResult < TData , TParams >
97
+
98
+ export function useRequest <
99
+ TData ,
100
+ TParams extends unknown [ ] = unknown [ ] ,
101
+ PluginsOptions extends UseRequestPlugin < TData , TParams > [ ] = UseRequestPlugin < TData , TParams > [ ]
102
+ > (
103
+ service : UseRequestService < TData , TParams > ,
104
+ options ?: UseRequestOptions <
105
+ TData ,
106
+ TParams ,
107
+ PluginsMiddleOptionsType < PluginsOptions , TData , TParams >
108
+ > ,
109
+ plugins ?: PluginsOptions ,
110
+ ) {
55
111
const BuiltInPlugins = [
56
112
process . env . NODE_ENV === 'development' ? useDevtoolsPlugin : null ,
57
113
useDebouncePlugin ,
@@ -61,15 +117,13 @@ export function useRequest<
61
117
useThrottlePlugin ,
62
118
useAutoRunPlugin ,
63
119
useCachePlugin ,
64
- useRetryPlugin
120
+ useRetryPlugin ,
65
121
] ?. filter ( Boolean )
66
122
67
123
return withArgs < TData , TParams > ( useRequestImplement , options ?. use ) ( service , options , [
68
124
...( plugins || [ ] ) ,
69
- ...BuiltInPlugins
125
+ ...BuiltInPlugins ,
70
126
] as UseRequestPlugin < TData , TParams > [ ] )
71
127
}
72
128
73
-
74
-
75
129
export default useRequest
0 commit comments