@@ -75,3 +75,65 @@ useInfiniteScroll 的第一个参数 `service` 是一个异步函数,对这个
75
75
title="mutate 数据突变"
76
76
desc="">
77
77
</demo >
78
+
79
+ ## API
80
+
81
+ ``` ts
82
+ export type Data = { list: any [];[key : string ]: any ; };
83
+ export type Service <TData extends Data > = (currentData ? : TData ) => Promise <TData >;
84
+
85
+ const {
86
+ data : Ref<TData>;
87
+ loading : ComputedRef<boolean>;
88
+ loadingMore : Ref<boolean>;
89
+ noMore : ComputedRef<boolean>;
90
+ loadMore : () = > void ;
91
+ loadMoreAsync : () = > Promise < TData > ;
92
+ reload : () = > void ;
93
+ reloadAsync : () = > Promise < TData > ;
94
+ cancel : () = > void ;
95
+ mutate : (data?: TData) = > void ;
96
+ } = useInfiniteScroll < TData extends Data > (
97
+ service : (currentData ? : TData ) => Promise < TData > ,
98
+ {
99
+ target?: BasicTarget ;
100
+ isNoMore ?: (data ? : TData ) => boolean ;
101
+ threshold ?: number ;
102
+ manual ?: boolean ;
103
+ reloadDeps ?: DependencyList ;
104
+ onBefore ?: () => void ;
105
+ onSuccess ?: (data : TData ) => void ;
106
+ onError ?: (e : Error ) => void ;
107
+ onFinally ?: (data ? : TData , e ? : Error ) => void ;
108
+ }
109
+ );
110
+ ```
111
+
112
+ ### Result
113
+
114
+ | 参数 | 说明 | 类型 |
115
+ | ------------- | -------------------------------------------------------------------------- | ------------------------ |
116
+ | data | service 返回的数据,其中的 ` list ` 属性为聚合后数据 | ` Ref<TData> ` \| ` undefined ` |
117
+ | loading | 是否正在进行首次请求 | ` ComputedRef<boolean> ` |
118
+ | loadingMore | 是否正在进行更多数据请求 | ` Ref<boolean> ` |
119
+ | noMore | 是否没有更多数据了,配置 ` options.isNoMore ` 后生效 | ` ComputedRef<boolean> ` |
120
+ | loadMore | 加载更多数据,会自动捕获异常,通过 ` options.onError ` 处理 | ` () => void ` |
121
+ | loadMoreAsync | 加载更多数据,与 ` loadMore ` 行为一致,但返回的是 Promise,需要自行处理异常 | ` () => Promise<TData> ` |
122
+ | reload | 加载第一页数据,会自动捕获异常,通过 ` options.onError ` 处理 | ` () => void ` |
123
+ | reloadAsync | 加载第一页数据,与 ` reload ` 行为一致,但返回的是 Promise,需要自行处理异常 | ` () => Promise<TData> ` |
124
+ | mutate | 直接修改 ` data ` | ` (data?: TData) => void ` |
125
+ | cancel | 忽略当前 Promise 的响应 | ` () => void ` |
126
+
127
+ ### Options
128
+
129
+ | 参数 | 说明 | 类型 | 默认值 |
130
+ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------- | ------- |
131
+ | target | 父级容器,如果存在,则在滚动到底部时,自动触发 ` loadMore ` 。需要配合 ` isNoMore ` 使用,以便知道什么时候到最后一页了。 | ` () => Element ` \| ` Element ` \| ` MutableRefObject<Element> ` | - |
132
+ | isNoMore | 是否有最后一页的判断逻辑,入参为当前聚合后的 ` data ` | ` (data?: TData) => boolean ` | - |
133
+ | threshold | 下拉自动加载,距离底部距离阈值 | ` number ` | ` 100 ` |
134
+ | reloadDeps | 变化后,会自动触发 ` reload ` | ` WatchSource ` \| ` any[] ` \| ` any ` | - |
135
+ | manual | <ul ><li > 默认 ` false ` 。 即在初始化时自动执行 service。</li ><li >如果设置为 ` true ` ,则需要手动调用 ` reload ` 或 ` reloadAsync ` 触发执行。 </li ></ul > | ` boolean ` | ` false ` |
136
+ | onBefore | service 执行前触发 | ` () => void ` | - |
137
+ | onSuccess | service resolve 时触发 | ` (data: TData) => void ` | - |
138
+ | onError | service reject 时触发 | ` (e: Error) => void ` | - |
139
+ | onFinally | service 执行完成时触发 | ` (data?: TData, e?: Error) => void ` | - |
0 commit comments