@@ -21,7 +21,10 @@ export default class Fetch<TData, TParams extends unknown[] = any> {
21
21
constructor (
22
22
public serviceRef : Ref < UseRequestService < TData , TParams > > ,
23
23
public options : UseRequestOptions < TData , TParams , any > ,
24
- public setUpdateData : ( s : any , key ?: keyof UseRequestFetchState < TData , TParams > ) => void ,
24
+ public setUpdateData : (
25
+ currentState : unknown ,
26
+ key ?: keyof UseRequestFetchState < TData , TParams > ,
27
+ ) => void ,
25
28
public initState : Partial < UseRequestFetchState < TData , TParams > > = { } ,
26
29
) {
27
30
this . state = {
@@ -32,38 +35,61 @@ export default class Fetch<TData, TParams extends unknown[] = any> {
32
35
}
33
36
34
37
// 设置state
35
- setState ( s : Partial < UseRequestFetchState < TData , TParams > > = { } ) {
38
+ setState ( currentState : Partial < UseRequestFetchState < TData , TParams > > = { } ) {
36
39
this . state = {
37
40
...this . state ,
38
- ...s ,
41
+ ...currentState ,
39
42
}
40
43
this . setUpdateData ( this . state )
41
44
}
42
45
43
46
/**
44
- *
45
- * @param data Result value `any `
47
+ * should rename
48
+ * @param data Result value `unknown `
46
49
* @param key Result key `data`| `params` | `loading`| `error`
47
50
*/
48
51
setData (
49
- data : any ,
52
+ data : unknown ,
53
+ key ?:
54
+ | keyof UseRequestFetchState < TData , TParams >
55
+ | ( keyof UseRequestFetchState < TData , TParams > ) [ ] ,
56
+ ) {
57
+ console . warn ( "Please use 'setFetchState' instead of 'setData'" )
58
+ if ( key instanceof Array ) {
59
+ key . forEach ( k => {
60
+ this . state [ k as keyof UseRequestFetchState < TData , TParams > ] = data as any
61
+ this . setUpdateData ( data , k )
62
+ } )
63
+ } else {
64
+ this . state [ key as keyof UseRequestFetchState < TData , TParams > ] = data as any
65
+ this . setUpdateData ( data , key )
66
+ }
67
+ }
68
+
69
+ /**
70
+ *
71
+ * @param data Result value `unknown`
72
+ * @param key Result key `data`| `params` | `loading`| `error`
73
+ */
74
+ setFetchState (
75
+ data : unknown ,
50
76
key ?:
51
77
| keyof UseRequestFetchState < TData , TParams >
52
78
| ( keyof UseRequestFetchState < TData , TParams > ) [ ] ,
53
79
) {
54
80
if ( key instanceof Array ) {
55
81
key . forEach ( k => {
56
- this . state [ k as keyof UseRequestFetchState < TData , TParams > ] = data
82
+ this . state [ k as keyof UseRequestFetchState < TData , TParams > ] = data as any
57
83
this . setUpdateData ( data , k )
58
84
} )
59
85
} else {
60
- this . state [ key as keyof UseRequestFetchState < TData , TParams > ] = data
86
+ this . state [ key as keyof UseRequestFetchState < TData , TParams > ] = data as any
61
87
this . setUpdateData ( data , key )
62
88
}
63
89
}
64
90
65
91
// 遍历需要运行的插件,是一个回调函数,供插件获取fetch实例和在对应节点执行插件逻辑
66
- runPluginHandler ( event : keyof UseRequestPluginReturn < TData , TParams > , ...rest : any [ ] ) {
92
+ runPluginHandler ( event : keyof UseRequestPluginReturn < TData , TParams > , ...rest : unknown [ ] ) {
67
93
// @ts -ignore
68
94
const r = ( this . pluginImpls ?. map ( i => i [ event ] ?.( ...rest ) ) ?? [ ] ) ?. filter ( Boolean )
69
95
// @ts -ignore
@@ -102,7 +128,7 @@ export default class Fetch<TData, TParams extends unknown[] = any> {
102
128
// replace service 开始请求,如果含有onRequest事件名
103
129
let { servicePromise } = this . runPluginHandler ( 'onRequest' , this . serviceRef . value , params )
104
130
105
- const requestReturn = ( res : any ) => {
131
+ const requestReturnResponse = ( res : any ) => {
106
132
// 取消了请求,count将与currentCount不一致,将发送空请求
107
133
if ( currentCount !== this . count ) {
108
134
return new Promise ( ( ) => { } )
@@ -135,18 +161,18 @@ export default class Fetch<TData, TParams extends unknown[] = any> {
135
161
if ( ! this . options . manual && this . options . refreshDeps === true ) {
136
162
watchEffect ( async ( ) => {
137
163
if ( unref ( this . options . ready ) ) {
138
- this . setData ( true , 'loading' )
164
+ this . setFetchState ( true , 'loading' )
139
165
servicePromise = this . serviceRef . value ( ...params )
140
- const res = await servicePromise
141
- return requestReturn ( res )
166
+ const servicePromiseResult = await servicePromise
167
+ return requestReturnResponse ( servicePromiseResult )
142
168
}
143
169
} )
144
170
} else {
145
171
servicePromise = this . serviceRef . value ( ...params )
146
172
}
147
173
}
148
- const res = await servicePromise
149
- return requestReturn ( res )
174
+ const servicePromiseResult = await servicePromise
175
+ return requestReturnResponse ( servicePromiseResult )
150
176
} catch ( error ) {
151
177
if ( currentCount !== this . count ) {
152
178
return new Promise ( ( ) => { } )
0 commit comments