React Native 下拉刷新和上拉加載更多

0、寫在前面

用React Native也有一段時(shí)間了,新出來的加載列表控件FlatList也出來了,F(xiàn)latList本身是支持下拉刷新和上拉加載更多的,而且性能比ListView要強(qiáng),但是Android和IOS要統(tǒng)一下拉頭,所以只能重寫這個(gè)控件,但是網(wǎng)上找半天沒有找到基于FlatList,只是找到這個(gè) react-native-pull 基于ListView的,所以自己動(dòng)手豐衣足食,順便鍛煉一下自己的React Native技能,但是是基于react-native-pull它的,站在巨人肩膀可以看的更遠(yuǎn)。項(xiàng)目源碼地址, Demo地址喜歡的給個(gè)star,謝謝!

1、特點(diǎn)

**
0- 純js跨平臺(tái)
1- Android、IOS 統(tǒng)一下拉頭
2- 下拉刷新和上拉加載
3- 加載中、正常顯示、空數(shù)據(jù)、網(wǎng)絡(luò)異常等情況的處理,用戶不用關(guān)心
4- 控件是基于最新的FlatList
5- 以上情況都支持自定義
6- FlatList自身支持的 單擊Item,添加頭部等
**

2、直接上效果圖

**下面效果圖有點(diǎn)失真,錄制有誤,真實(shí)情況不卡,真實(shí)情況不卡,真實(shí)情況不卡!??!


正常情況.gif
空數(shù)據(jù)情況.gif
異常情況.gif
加載更多時(shí)的異常.gif

3、使用姿勢

導(dǎo)入控件:

  npm install react-native-refreshlist --save
  import RefreshList from 'react-native-refreshlist'

使用控件:

<RefreshList
     ref={(list)=> this._listRef = list}
     onPullRelease={(resolve)=> this._onPullRelease(resolve)}
     ItemHeight={120}
     onEndReached={()=> this._loadMore()}
     renderItem={(item)=> this._renderItem(item)}/>

使用說明:

  1. 要給組件設(shè)置一個(gè)ref
  2. 下拉刷新的設(shè)置onPullRelease,并且從父控件傳入一個(gè)回調(diào)
  3. 設(shè)置ItemHeight屬性,為了給Item一個(gè)固定高度,官方說增加性能
  4. onEndReached設(shè)置上拉加載更多
  5. 渲染Item控件 renderItem
  6. 下拉刷新數(shù)據(jù)的設(shè)置 this._listRef.setData(data);
  7. 上拉加載更多的設(shè)置 this._listRef.addData(data);
  8. 給控件增加以下屬性可以 自定義
    renderLoading 加載中 自定義
    renderEmpty 空頁面 自定義
    renderError 數(shù)據(jù)錯(cuò)誤 自定義
    renderNoMore 沒有更多 自定義
    renderMoreError 加載更多出錯(cuò) 自定義
    renderMore 加載更多 自定義

4、Demo

以上說了那么多估計(jì)還是模糊,還是直接上Demo
Demo地址

5、參考文章

https://facebook.github.io/react-native/docs/flatlist.html
https://github.com/greatbsky/react-native-pull
https://github.com/gzfgeh/RefreshListDemo
https://github.com/gzfgeh/RefreshList

最后,喜歡的給個(gè)star,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容