react-recycled-list
Version:
A React library for efficiently rendering large list with expensive component
41 lines (40 loc) • 1.86 kB
TypeScript
import React from 'react';
import { ReactRecycledListProps, ReactRecycledListState } from './TypeDef';
import { RowToDataIndexMap } from './utils';
export default abstract class General<P extends ReactRecycledListProps, S extends ReactRecycledListState> extends React.PureComponent<P, S> {
prevScroll: number;
prevLastVisibleRow: number;
prevLastRenderedRow: number;
abstract listWindowRef: any;
abstract rowHeights: number[];
abstract rowPositions: number[];
abstract rowToDataIndexMap: RowToDataIndexMap;
abstract totalNumOfRenderedRows: number;
abstract initialArrayTemplate: null[];
abstract totalRows: number;
abstract fullHeight: number;
abstract timeOut: any;
abstract windowHeight: number;
abstract numOfInvisibleRowOnEachDirection: number;
abstract getTopViewportRowIndex(scrollTop: number): number;
abstract getBottomViewportRowIndex(scrollTop: number): number;
abstract shouldResetList(prevProps: P): boolean;
abstract initializeProperties(): any;
constructor(props: P);
componentDidMount(): void;
componentWillUnmount(): void;
componentDidUpdate(prevProps: P): void;
onListWillRecycle: (newRenderedRowIndex: number[], newScrollState: boolean[], newTopRenderedRowRelativeIndex: number) => void;
onScrollChange: (scrollTop: number) => void;
recycle: (scrollTop: number) => void;
resetList: () => void;
onScroll: (event: React.UIEvent<HTMLElement>) => void;
scrollToDataIndex: (targetIndex: number) => void;
scrollToRow: (targetRow: number) => void;
scrollTo: (scrollTop: number) => void;
manualScroll: (targetPosition: number) => void;
mod: (n: number, m?: number) => number;
getResetViewportBottom: () => number;
_debounceScrollState: () => void;
render(): JSX.Element;
}