더북(TheBook)

이렇게 하면 콘텐츠의 85%까지 스크롤했을 때 onEndReached 함수가 호출됩니다. 스크롤로 더 많은 정보를 불러오는 무한스크롤링을 구현할 때 이 Props를 사용하면 유용한데, 현재 우리 상황에는 사용하지 못합니다. 스크롤이 바닥에서 가까워지면 글쓰기 버튼을 숨기고, 멀어지면 글쓰기 버튼을 다시 보여줘야 하는데 이 방식은 멀어졌을 때를 구분하지 못하기 때문입니다.

onEndReached를 사용하는 대신 onScroll 이벤트를 사용할 것입니다. onScroll 이벤트를 사용하면 콘텐츠의 전체 크기와 스크롤의 위치를 알아낼 수 있습니다. onScroll Props는 ScrollViewonScroll과 동일합니다. 자세한 내용은 다음 링크를 확인해보세요.

https://reactnative.dev/docs/scrollview#onscroll

FeedList에서 onScroll 함수를 다음과 같이 구현해보세요. 그리고 스크롤을 맨 아래로 내린 뒤 터미널에 출력되는 결과물을 확인해보세요.

components/FeedList.js

import React from 'react';
import {FlatList, StyleSheet, View} from 'react-native';
import FeedListItem from './FeedListItem';

function FeedList({logs}) {
  const onScroll = (e) => {
    const {contentSize, layoutMeasurement, contentOffset} = e.nativeEvent;
    console.log({contentSize, layoutMeasurement, contentOffset});
  };
  return (
    <FlatList
      data={logs}
      style={styles.block}
      renderItem={({item}) => <FeedListItem log={item} />}
      keyExtractor={(log) => log.id}
      ItemSeparatorComponent={() => <View style={styles.separator} />}
      onScroll={onScroll}
    />
  );
}

(...)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.