# react-native-rk-pull-to-refresh **Repository Path**: zfWebSies/react-native-rk-pull-to-refresh ## Basic Information - **Project Name**: react-native-rk-pull-to-refresh - **Description**: a pull to refresh component for react-native, same api on both android and ios - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-02-21 - **Last Updated**: 2021-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # react-native-rk-pull-to-refresh(ios/android) [中文说明](https://github.com/hzl123456/react-native-rk-pull-to-refresh/blob/master/README-ZH.md)

A pull to refresh component for react-native, same api on both android and ios.Also you can design you owner pull style for this component.You can use it for most of the component in react-native such as View,Scrollview,Listview and Flatlist. ## Preview ![ios](https://github.com/hzl123456/react-native-rk-pull-to-refresh/blob/master/image/ios.gif)

![android](https://github.com/hzl123456/react-native-rk-pull-to-refresh/blob/master/image/android.gif) ## Installation npm install react-native-rk-pull-to-refresh --save
react-native link react-native-rk-pull-to-refresh ## How to use It contains PullView,PullScrollView,PullListView and PullFlatList.If you want to use PullFlatList,you should use this component whith React Native 0.43 and newer. ### Use it for Listview with default style ``` import React, {PureComponent} from 'react'; import {ListView, View, Text, Dimensions} from 'react-native'; import {PullListView} from 'react-native-rk-pull-to-refresh' const width = Dimensions.get('window').width export default class PullListViewDemo extends PureComponent { constructor(props) { super(props); this.dataSource = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}).cloneWithRows(this.getDataSource()) } getDataSource = () => { let array = new Array(); for (let i = 0; i < 50; i++) { array.push(`ListViewItem:${i + 1}`); } return array; } render() { return ( this.pull = c} isContentScroll={true} style={{flex: 1, width: width}} onPushing={this.props.onPushing} onPullRelease={this._onPullRelease} dataSource={this.dataSource} renderRow={this._renderRow}/> ) } _onPullRelease = () => { setTimeout(() => { this.pull && this.pull.finishRefresh() }, 2000) } _renderRow = (rowData) => { return ( {rowData} ); } componentDidMount() { this.pull && this.pull.startRefresh() } } ``` ### Use it for View with you owner style ``` import React, {PureComponent} from 'react'; import {View, Text, Dimensions, StyleSheet, ActivityIndicator} from 'react-native'; import {PullView} from 'react-native-rk-pull-to-refresh' const width = Dimensions.get('window').width const topIndicatorHeight = 50 export default class PullViewDemo extends PureComponent { render() { return ( this.pull = c} style={{flex: 1, width: width}} topIndicatorRender={this.topIndicatorRender} topIndicatorHeight={topIndicatorHeight} onPullStateChangeHeight={this.onPullStateChangeHeight} onPushing={this.props.onPushing} onPullRelease={this._onPullRelease}> 这是内容 ) } onPullStateChangeHeight = (pullState, moveHeight) => { if (pullState == 'pulling') { this.txtPulling && this.txtPulling.setNativeProps({style: styles.show}); this.txtPullok && this.txtPullok.setNativeProps({style: styles.hide}); this.txtPullrelease && this.txtPullrelease.setNativeProps({style: styles.hide}); } else if (pullState == 'pullok') { this.txtPulling && this.txtPulling.setNativeProps({style: styles.hide}); this.txtPullok && this.txtPullok.setNativeProps({style: styles.show}); this.txtPullrelease && this.txtPullrelease.setNativeProps({style: styles.hide}); } else if (pullState == 'pullrelease') { this.txtPulling && this.txtPulling.setNativeProps({style: styles.hide}); this.txtPullok && this.txtPullok.setNativeProps({style: styles.hide}); this.txtPullrelease && this.txtPullrelease.setNativeProps({style: styles.show}); } } topIndicatorRender = () => { return ( this.txtPulling = c} style={styles.hide}>pulling... this.txtPullok = c} style={styles.hide}>pullok... this.txtPullrelease = c} style={styles.hide}>pullrelease... ); } _onPullRelease = () => { setTimeout(() => { this.pull && this.pull.finishRefresh() }, 2000) } componentDidMount() { this.pull && this.pull.startRefresh() } } const styles = StyleSheet.create({ hide: { position: 'absolute', left: 10000, backgroundColor: 'transparent' }, show: { position: 'relative', left: 0, backgroundColor: 'transparent' } }); ``` ## Full Demo clone or download PullToRefreshDemo ## Props Porp|Type|Optional|Default|Description ---- | ---- | ------- | ------- | ------------ refreshable | bool | yes | true |can pull to refresh or not isContentScroll | bool | yes |false|content scroll when pulling onPullRelease | func |yes | | when refreshing, this function will be called topIndicatorRender |func |yes | |top pulling render for this component,when the value is undefined,this component use default top pulling render topIndicatorHeight |number |yes | |top pulling render header,when topIndicatorRender is not undefined,you must set the correct topIndicatorHeight onPullStateChangeHeight |func|yes| |when pulling, this function will be called onPushing|func|yes| |when pulling, this function will be called ## Method startRefresh():force begin pull down refresh
finishRefresh():end pull down refresh