/* eslint-disable react-native/no-inline-styles */ import React, { forwardRef, ReactElement } from 'react'; // import { FlashList, FlashListProps } from '@shopify/flash-list'; import PullToRefresh from '../PullToRefresh'; import { Props as PullToRefreshProps } from '../PullToRefresh/interface'; import { Text, FlatList, FlatListProps, StyleProp, TextStyle, } from 'react-native'; import { Loading, Skeleton } from '@xrnjs/ui'; import { StyleSheet } from 'react-native'; import styles from './style'; import { useLocale } from '../Locale/locale'; export type VirtualListProps = { // containerProps: ViewProps; isEndReached?: boolean; // 从外部传入是否到达列表底部的属性 pullToRefreshProps?: Omit; renderEmptyComponent?: ReactElement; renderFooterComponent?: ReactElement; footerText?: React.ReactNode; footerTextStyle?: StyleProp; } & FlatListProps; function VirtualList(props: VirtualListProps, ref: any) { // const { onRefresh = () => Promise.resolve() } = props; const { pullToRefreshProps, isEndReached, renderEmptyComponent: propsRenderEmptyComponent, renderFooterComponent, footerText, footerTextStyle, ...flashListProps } = props; const { topPullThreshold = 0 } = pullToRefreshProps || {}; const locale = useLocale().VirtualList; const renderListFooterComponent = () => { if (isEndReached) { if (renderFooterComponent) return renderFooterComponent; return ( {footerText || locale.footerText} ); } else { return ( ); } }; const renderEmptyComponent = () => { if (propsRenderEmptyComponent) return propsRenderEmptyComponent; return ; }; return ( } headerHeight={55} refreshing={Boolean(flashListProps?.refreshing)} {...pullToRefreshProps} style={{ flex: 1, zIndex: -99 }} onRefresh={flashListProps?.onRefresh} topPullThreshold={topPullThreshold} > ); } /** * @deprecated 不再维护,请使用 PullToRefreshNative */ export default forwardRef(VirtualList);