InfiniteScrollingList<T>
Defined in: rxdb-angular/src/InfiniteScrollingList.ts:90
基于游标分页的无限滚动列表。
Remarks
必须在注入上下文中构造 —— 内部经 inject(DestroyRef) 注册销毁钩子,
宿主销毁时自动退订全部页查询。
各页以独立的活查询订阅维护,value 是按页顺序合并后的结果;
底层数据变更会让对应页自动重新发射。
更符合 Angular 习惯的入口见 useInfiniteScroll(返回 signal 资源,
与 React/Vue 侧的 useInfiniteScroll 同名同形)(RAN-015)。
Type Parameters
| Type Parameter | Description |
|---|---|
T extends EntityType | 实体构造器类型 |
Constructors
Constructor
new InfiniteScrollingList<T>(
rxdb,
EntityType,
options
): InfiniteScrollingList<T>;
Defined in: rxdb-angular/src/InfiniteScrollingList.ts:129
Parameters
| Parameter | Type | Description |
|---|---|---|
rxdb | RxDB | RxDB 实例 |
EntityType | T | 实体构造器 |
options | InfiniteScrollOptions<T> | 游标分页选项;传函数时为响应式读取器,选项变化会自动重置并重新加载 |
Returns
InfiniteScrollingList<T>
Properties
error
readonly error: Signal<Error | undefined>;
Defined in: rxdb-angular/src/InfiniteScrollingList.ts:110
最近一次加载错误;下一次成功加载会清空它。
hasMore
readonly hasMore: Signal<boolean>;
Defined in: rxdb-angular/src/InfiniteScrollingList.ts:114
是否仍可能存在下一页;某页返回不足 limit 条即置 false。
hasValue
readonly hasValue: Signal<boolean>;
Defined in: rxdb-angular/src/InfiniteScrollingList.ts:118
是否已有任何数据(与 isEmpty 不同,不考虑加载/错误态)。
isEmpty
readonly isEmpty: Signal<boolean>;
Defined in: rxdb-angular/src/InfiniteScrollingList.ts:120
isLoading
readonly isLoading: Signal<boolean>;
Defined in: rxdb-angular/src/InfiniteScrollingList.ts:112
当前是否正在加载新页面。
value
readonly value: Signal<InstanceType<T>[]>;
Defined in: rxdb-angular/src/InfiniteScrollingList.ts:116
已加载页面按顺序合并后的实体。
Methods
loadMore()
loadMore(): void;
Defined in: rxdb-angular/src/InfiniteScrollingList.ts:164
加载下一页。
Returns
void
Remarks
isLoading 为真或 hasMore 为假时是 no-op —— 重复调用不会产生并发请求。
RAN-002:方法体整体包在 untracked 里。它先读 isLoading / hasMore /
响应式 options / #values,随后又写回同一批 signal;不隔离的话,调用方在
effect 里按自己的 trigger 调用一次,这些内部 signal 会全部被登记为该 effect
的依赖 —— 某页 next 把 isLoading 置回 false 就唤醒 effect 并立刻请求下一页,
trigger 从未再变却一路翻到底。隔离后只有调用方自己声明的依赖参与触发。
refresh()
refresh(): void;
Defined in: rxdb-angular/src/InfiniteScrollingList.ts:191
丢弃全部已加载页面并从第一页重新加载。
Returns
void
Remarks
会退订所有在途的页查询;error 与 hasMore 一并复位。
宿主注入器已销毁时是彻底的 no-op。
与 loadMore 同样运行在 untracked 中,理由见该方法(RAN-002)。
RAN-012:destroyed 守卫必须在 #resetState() 之前 —— 守卫只写在
loadMore 里时,销毁后的 refresh 会先把 #values 清空、再由 loadMore 空转,
用户看到的是一个永远回不来的空列表。对齐 React 侧
(rxdb-react/src/useInfiniteScroll.ts 的 if (!mountedRef.current) return;)。