UNPKG

daniel-pull-to-refresh

Version:
49 lines (48 loc) 1.6 kB
import React from 'react'; import { StyleSheet } from 'react-native'; import { DefaultPullToRefreshFooter } from '../Footer'; import { DefaultPullToRefreshHeader } from '../Header'; import { NativePullToRefresh } from './native'; export class PullToRefresh extends React.Component { static DefaultHeader = DefaultPullToRefreshHeader; static DefaultFooter = DefaultPullToRefreshFooter; static setDefaultHeader(Header) { PullToRefresh.DefaultHeader = Header ?? DefaultPullToRefreshHeader; } static setDefaultFooter(Footer) { PullToRefresh.DefaultFooter = Footer ?? DefaultPullToRefreshFooter; } renderHeader() { const { onRefresh, refreshing, header } = this.props; if (header) { return header; } if (onRefresh) { return <PullToRefresh.DefaultHeader onRefresh={onRefresh} refreshing={!!refreshing}/>; } return null; } renderFooter() { const { onLoadMore, loadingMore, noMoreData, footer } = this.props; if (footer) { return footer; } if (onLoadMore) { return <PullToRefresh.DefaultFooter onRefresh={onLoadMore} refreshing={!!loadingMore} noMoreData={noMoreData}/>; } return null; } render() { const { children, style } = this.props; return (<NativePullToRefresh style={[styles.fill, style]}> {this.renderHeader()} {children} {this.renderFooter()} </NativePullToRefresh>); } } const styles = StyleSheet.create({ fill: { flex: 1, }, });