【发布时间】:2018-09-18 10:38:09
【问题描述】:
我正在尝试处理我的用户尝试更快滚动或拖动滚动条对列表的某些部分进行随机搜索的情况。
我有一个大约 20000 个项目的数据集,我通过无限滚动向用户展示这些项目。
- 我使用了一个稀疏数组,该数组根据通过
loadMoreRows发起的数据获取进行水合,loadMoreRows是我列表中的数据源。 - 当请求正在进行时,我在稀疏数组中保留带有 loadingIndicators 的点,并在请求正在进行时使用它为
isRowLoaded={this.onIsRowLoadedCheck}返回 true。 -
我使用
minimumBatchSize的100和threshold的50<InfiniteLoader isRowLoaded={this.onIsRowLoadedCheck} loadMoreRows={this.onLoadMoreRows} rowCount={this.props.items.total} minimumBatchSize={100} threshold={50} > {({ onRowsRendered, registerChild }) => ( <AutoSizer disableWidth> {({ height }) => ( <List ref={listViewRef => { this.listView = listViewRef; return registerChild(listViewRef); }} height={height} onRowsRendered={onRowsRendered} rowCount={this.props.items.total} noRowsRenderer={this.onNoRowsRenderer} overscanRowCount={20} deferredMeasurementCache={cache} rowHeight={cache.rowHeight} rowRenderer={this.renderRow} width={256} /> )} </AutoSizer> )} </InfiniteLoader>
我希望能够对服务器的调用进行去抖动,这样我就可以避免服务器过载,直到用户停止使用滚动条。
onLoadMoreRows = (loadMoreRowsRange: LoadMoreRowsRange) => {
const { startIndex, stopIndex } = loadMoreRowsRange;
this.props.fetchItems(startIndex, stopIndex - startIndex + 1);
};
是否有常用的策略来处理这种情况?
我看到之前在https://github.com/bvaughn/react-virtualized/issues/202 中讨论过类似的问题
【问题讨论】:
标签: infinite-scroll react-virtualized