import React from 'react'; import {StyleSheet} from 'react-native'; import {PullToRefreshFooterProps, PullToRefreshHeaderProps, PullToRefreshProps} from '../types'; import {DefaultPullToRefreshFooter} from '../Footer'; import {DefaultPullToRefreshHeader} from '../Header'; import {NativePullToRefresh} from './native'; export class PullToRefresh extends React.Component { private static DefaultHeader: React.ComponentType = DefaultPullToRefreshHeader; private static DefaultFooter: React.ComponentType = DefaultPullToRefreshFooter; static setDefaultHeader(Header: React.ComponentType) { PullToRefresh.DefaultHeader = Header ?? DefaultPullToRefreshHeader; } static setDefaultFooter(Footer: React.ComponentType) { PullToRefresh.DefaultFooter = Footer ?? DefaultPullToRefreshFooter; } renderHeader() { const {onRefresh, refreshing, header} = this.props; if (header) { return header; } if (onRefresh) { return ; } return null; } renderFooter() { const {onLoadMore, loadingMore, noMoreData, footer} = this.props; if (footer) { return footer; } if (onLoadMore) { return ( ); } return null; } render() { const {children, style} = this.props; return ( {this.renderHeader()} {children} {this.renderFooter()} ); } } const styles = StyleSheet.create({ fill: { flex: 1, }, });