跳到主要内容

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 ParameterDescription
T extends EntityType实体构造器类型

Constructors​

Constructor​

new InfiniteScrollingList<T>(
rxdb,
EntityType,
options
): InfiniteScrollingList<T>;

Defined in: rxdb-angular/src/InfiniteScrollingList.ts:129

Parameters​

ParameterTypeDescription
rxdbRxDBRxDB 实例
EntityTypeT实体构造器
optionsInfiniteScrollOptions<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;)。