@wenghongtian/react-virtual-list
Version:
66 lines (65 loc) • 1.28 kB
TypeScript
import { ReactNode } from "react";
export type ResponseData<T extends object> = {
list: T[];
noMore: boolean;
};
export interface Pagination {
current: number;
pageSize: number;
}
export type Request<T extends object> = (page: Pagination) => Promise<ResponseData<T>>;
export interface CachePosition {
index: number;
top: number;
bottom: number;
height: number;
}
/**
* VirtualListProps
*/
export interface VirtualListProps<T extends object> {
/**
* 子项渲染函数
*/
renderItem(data: T, index: number): ReactNode;
/**
* 缓存大小
*/
bufferSize?: number;
/**
* 每一项的间距
*/
itemOffset?: number;
/**
* 每一项的最小高度(默认100)
*/
estimateHeight?: number;
/**
* 数据为空时渲染
*/
empty?: ReactNode;
/**
* 每一项的key值
*/
rowKey?: keyof T;
/**
* onScroll
*/
onScroll?: React.UIEventHandler<HTMLDivElement>;
/**
* 请求函数
*/
request: Request<T>;
/**
* 分页属性
*/
pagination?: Pagination;
/**
* loading时渲染
*/
loadingRender?: ReactNode;
/**
* 没有更多时渲染
*/
noMoreRender?: ReactNode;
}