UNPKG

@sdcx/pull-to-refresh

Version:
50 lines (49 loc) 1.62 kB
import React from 'react'; import { StyleSheet } from 'react-native'; import { DefaultPullToRefreshFooter } from '../Footer'; import { DefaultPullToRefreshHeader } from '../Header'; import { NativePullToRefresh } from './native'; 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>); } } export { PullToRefresh }; const styles = StyleSheet.create({ fill: { flex: 1, }, });