티스토리 뷰

728x90
반응형

페이징 기능이 들어가는 View의 경우에는, FlatList의 onEndReached 속성을 사용해서 스크롤의 하단에 닿았을 때

pageSize를 늘려주거나 page를 변경해주어 api를 새로 호출해주게 되는 페이징 기능을 주로 사용하게 되는데,

 

필요에 따라 flatList가 아닌 ScrollView에서 이 기능을 사용해주어야 할 때가 있다.

다만 ScrollView에서는 onEndReached 속성이 없기에 따로 구현해주어야 하는 단점이 있는데,

이럴 때 ScrollView의 onScrollEndDrag 속성을 잘 활용하면 문제없이 구현이 가능하다!

 

onScrollEndDrag 는 사용자가 ScrollView 안에서 스크롤 동작을 끝냈을 때 발생되게 되는 이벤트인데,

이 동작이 끝나는 타이밍을 스크롤의 하단부에 닿았을 때를 계산하여 동작하게끔 하면 onEndReached와 같은 효과를 기대할 수 있게 된다.

 

 const isCloseToBottom = ({
    layoutMeasurement,
    contentOffset,
    contentSize,
  }: NativeScrollEvent) => {
    const paddingToBottom = 34;
    return (
      layoutMeasurement.height + contentOffset.y >=
      contentSize.height - paddingToBottom
    );
  };
<ScrollView
      onScrollEndDrag={({nativeEvent}) => {
        if (isCloseToBottom(nativeEvent)) {
          setPageSize(pageSize + 10);
        }
      }}>
      
      {children}
      
      </ScrollView>

 

출처 : https://mniyunsu.github.io/react-native-scrollview/

728x90
반응형
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함