/** * 基于 https://github.com/clauderic/react-tiny-virtual-list 改造,主要是加了宽度自适应 */ import * as React from 'react'; import SizeAndPositionManager, { ItemSize } from './SizeAndPositionManager'; import { ALIGNMENT, DIRECTION, SCROLL_CHANGE_REASON } from './constants'; export { DIRECTION as ScrollDirection } from './constants'; export declare type ItemPosition = 'absolute' | 'sticky'; export interface ItemStyle { position: ItemPosition; top?: number; left: number; width: string | number; height?: number; marginTop?: number; marginLeft?: number; marginRight?: number; marginBottom?: number; zIndex?: number; } export interface ItemInfo { index: number; style: ItemStyle; } export interface RenderedRows { startIndex: number; stopIndex: number; } export interface Props { className?: string; estimatedItemSize?: number; height: number | string; itemCount: number; itemSize: ItemSize; overscanCount?: number; scrollOffset?: number; scrollToIndex?: number; scrollToAlignment?: ALIGNMENT; scrollDirection?: DIRECTION; stickyIndices?: number[]; style?: React.CSSProperties; width?: number | string; onItemsRendered?({ startIndex, stopIndex }: RenderedRows): void; onScroll?(offset: number, event: UIEvent): void; renderItem(itemInfo: ItemInfo): React.ReactNode; } export interface State { offset: number; scrollChangeReason: SCROLL_CHANGE_REASON; } declare class VirtualList extends React.PureComponent { static defaultProps: { overscanCount: number; scrollDirection: DIRECTION; width: string; }; static propTypes: { estimatedItemSize: any; height: any; itemCount: any; itemSize: any; onScroll: any; onItemsRendered: any; overscanCount: any; renderItem: any; scrollOffset: any; scrollToIndex: any; scrollToAlignment: any; scrollDirection: any; stickyIndices: any; style: any; width: any; }; itemSizeGetter: (itemSize: Props['itemSize']) => (index: any) => any; sizeAndPositionManager: SizeAndPositionManager; readonly state: State; private rootNode; private styleCache; componentDidMount(): void; updateRootWidth(): void; componentDidUpdate(prevProps: Props, prevState: State): void; componentWillUnmount(): void; scrollTo(value: number): void; getOffsetForIndex(index: number, scrollToAlignment?: ALIGNMENT, itemCount?: number): number; recomputeSizes(startIndex?: number): void; render(): JSX.Element; private getRef; private handleScroll; private getNodeOffset; private getEstimatedItemSize; private getSize; private getStyle; } export default VirtualList;