@@ -47,13 +47,21 @@ class SmartRefreshControl extends Component {
4747 componentWillMount ( ) {
4848 this . _panResponder = PanResponder . create ( {
4949 onMoveShouldSetPanResponderCapture : ( evt , gestureState ) => {
50- if ( Math . abs ( gestureState . dx ) > 1 || Math . abs ( gestureState . dy ) > 1 ) {
50+ if ( this . shiftPercent >= 0.039 || this . footerShiftPercent >= 0.068 ) { //满足条件捕获事件
5151 return true
5252 }
5353 return false ;
5454 }
5555 } ) ;
5656 }
57+
58+ shiftPercent = 0 ; //header位移百分比,默认为0
59+
60+ footerShiftPercent = 0 ; // footer位移百分比
61+ /**
62+ * 渲染Header
63+ * @return {* }
64+ */
5765 renderHeader = ( ) => {
5866 const { HeaderComponent} = this . props ;
5967 if ( HeaderComponent ) {
@@ -63,16 +71,51 @@ class SmartRefreshControl extends Component {
6371 }
6472 return < DefaultHeader />
6573 }
74+ /**
75+ * 刷新时触发
76+ * @private
77+ */
6678 _onSmartRefresh = ( ) => {
67- this . props . onRefresh && this . props . onRefresh ( ) ;
79+ let { onRefresh} = this . props ;
80+ onRefresh && onRefresh ( ) ;
6881 }
69- //TODO://还未实现
70- renderFooter = ( ) => {
71- return null ;
82+ /**
83+ * 下拉过程
84+ * @param event
85+ * @private
86+ */
87+ _onHeaderPulling = ( event ) => {
88+ this . shiftPercent = event . nativeEvent . percent ;
89+ let { onHeaderPulling, onHeaderMoving} = this . props ;
90+ onHeaderMoving && onHeaderMoving ( event ) ;
91+ onHeaderPulling && onHeaderPulling ( event ) ;
7292 }
93+ /**
94+ * 释放过程
95+ * @param event
96+ * @private
97+ */
98+ _onHeaderReleasing = ( event ) => {
99+ this . shiftPercent = event . nativeEvent . percent ;
100+ let { onHeaderReleasing, onHeaderMoving} = this . props ;
101+ onHeaderMoving && onHeaderMoving ( event ) ;
102+ onHeaderReleasing && onHeaderReleasing ( event ) ;
103+ }
104+ /**
105+ * 底部位移过程
106+ * @param event
107+ * @private
108+ */
109+ _onFooterMoving = ( event ) => {
110+ this . footerShiftPercent = event . nativeEvent . percent ;
111+ }
112+
73113 render ( ) {
74114 const nativeProps = { ...this . props , ...{
75115 onSmartRefresh :this . _onSmartRefresh ,
116+ onHeaderPulling :this . _onHeaderPulling ,
117+ onHeaderReleasing :this . _onHeaderReleasing ,
118+ onFooterMoving :this . _onFooterMoving
76119 } }
77120 return (
78121 < SmartRefreshLayout
@@ -99,6 +142,7 @@ SmartRefreshControl.propTypes = {
99142 onLoadMore : PropTypes . func ,
100143 onHeaderPulling :PropTypes . func ,
101144 onHeaderReleasing :PropTypes . func ,
145+ onHeaderMoving :PropTypes . func , //向外提供的接口
102146 onPullDownToRefresh :PropTypes . func ,
103147 onReleaseToRefresh :PropTypes . func ,
104148 onHeaderReleased :PropTypes . func ,
0 commit comments