File tree Expand file tree Collapse file tree 1 file changed +11
-1
lines changed Expand file tree Collapse file tree 1 file changed +11
-1
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,9 @@ export interface PaginatedOption<
5
5
L extends keyof LimitOptionAll = keyof LimitOptionAll ,
6
6
K = unknown
7
7
> {
8
+ /** 上一页的 key */
9
+ lastKey ?: K
10
+
8
11
/** @returns `true`: 继续下一页;`false`: 停止获取 */
9
12
limit ?: LimitFn < L | 'total' , T >
10
13
/**
@@ -16,6 +19,11 @@ export interface PaginatedOption<
16
19
key : K | undefined ,
17
20
data : T [ ]
18
21
) => boolean | void
22
+ /**
23
+ * 当结束时触发
24
+ * @returns `false`: 将停止获取下一页
25
+ */
26
+ onDone ?: ( totalPage : number , key : K | undefined , data : T [ ] ) => boolean | void
19
27
}
20
28
21
29
export type PaginatedFetcher < T , K > = (
@@ -31,7 +39,7 @@ export const fetchPaginated = async <
31
39
limitOptionGetter : ( item : T , data : T [ ] ) => LimitOption < L | 'total' > ,
32
40
option : PaginatedOption < T , L , K >
33
41
) => {
34
- let lastKey : K | undefined = undefined
42
+ let lastKey : K | undefined = option . lastKey
35
43
const data : T [ ] = [ ]
36
44
let isContinue = true
37
45
let page = 1
@@ -58,5 +66,7 @@ export const fetchPaginated = async <
58
66
page ++
59
67
} while ( isContinue && lastKey )
60
68
69
+ option . onDone ?.( page , lastKey , data )
70
+
61
71
return data
62
72
}
You can’t perform that action at this time.
0 commit comments