react-native SectionList FlatList上拉分頁加載


SectionList、FlatList提供了以下兩個接口可供處理分頁加載需求:

 

 

 

 

 

 

但是onEndReached有以下bug:

1.第一次渲染時有不必要的調用 :onEndReached在初始渲染后會被調用一次或多次。

2.在當前數據無法鋪滿一頁的情況下,onEndReached會被持續調用,直到滿足onEndReachedThreshold條件為止。

 

切換思路解決上拉分頁加載需求:

思路:

onScroll的回調對象event.nativeEvent中:

  • contentSize表示整個ScrollView的高度height、寬度width
  • contentOffset表示ScrollView在x/y軸上的位移值
  • layoutMeasurement表示當前ScrollView容器的高度height、寬度width

如果列表觸底,則有:

contentOffset.y + layoutMeasurement.height = contentSize.height

 

解決:

1 onScroll(event) {
2   let y = event.nativeEvent.contentOffset.y
3   let height = event.nativeEvent.layoutMeasurement.height
4   let contentHeight = event.nativeEvent.contentSize.height
5   if (Math.abs(y + height - contentHeight) < 1) {
6     //Load More
7   }
8 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM