react-native-largelist
Version:
The best performance large list component which is much better than SectionList for React Native.
74 lines (63 loc) • 2.42 kB
TypeScript
/*
* @Author: 石破天惊
* @email: shanshang130@gmail.com
* @Date: 2021-07-21 13:11:34
* @LastEditTime: 2021-08-05 18:42:43
* @LastEditors: 石破天惊
* @Description:
*/
declare module "react-native-largelist" {
import { SpringScrollViewPropType, Offset } from "react-native-spring-scrollview";
import * as React from "react";
import { Animated } from "react-native";
export interface IndexPath {
section: number;
row: number;
}
export type LargeListDataType = { items: any[] }[];
export interface LargeListPropType extends SpringScrollViewPropType {
data: LargeListDataType;
heightForSection?: (section: number) => number;
renderSection?: (section: number) => React.ReactElement<any>;
heightForIndexPath: (indexPath: IndexPath) => number;
renderIndexPath: (indexPath: IndexPath) => React.ReactElement<any>;
renderHeader?: () => React.ReactElement<any>;
renderFooter?: () => React.ReactElement<any>;
renderEmpty?: () => React.ReactElement<any>,
groupCount?: number;
groupMinHeight?: number;
updateTimeInterval?: number;
headerStickyEnabled?: boolean;
}
export class LargeList extends React.PureComponent<LargeListPropType> {
scrollTo(offset: Offset, animated?: boolean): Promise<void>;
scrollToIndexPath(indexPath: IndexPath, animated?: boolean): Promise<void>;
endRefresh(): void;
endLoading(): void;
}
export interface WaterfallListType<T> extends SpringScrollViewPropType {
data: T[];
heightForItem: (item: T, index: number) => number;
renderItem: (item: T, index: number, columnIdx: number) => React.ReactElement<any>;
preferColumnWidth?: number;
numColumns?: number;
renderHeader?: () => React.ReactElement<any>;
renderFooter?: () => React.ReactElement<any>;
onNativeContentOffsetExtract?: {
x?: Animated.Value;
y?: Animated.Value;
};
}
export class WaterfallList<T> extends React.PureComponent<WaterfallListType<T>> {
scrollTo(offset: Offset, animated?: boolean): Promise<void>;
endRefresh(): void;
endLoading(): void;
}
export interface StickyFormPropType extends LargeListPropType {}
export class StickyForm extends React.PureComponent<StickyFormPropType> {
scrollTo(offset: Offset, animated?: boolean): Promise<void>;
beginRefresh():Promise<void>;
endRefresh(): void;
endLoading(rebound?: boolean): void;
}
}