u_ju
우주의 우당탕탕개발일지
u_ju
전체 방문자
오늘
어제
  • 분류 전체보기 (118)
    • 팀 프로젝트 (2)
    • 내배캠 WIL & TIL (91)
    • JS (0)
    • React (1)
    • CS (23)
    • Next (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩#바보#오류투성이#팀프로젝트
  • 일요일 오늘은 내가 바로 함수만들기 요리사 !
  • Component를 처음 선언하는 것을 Mount 라고 한다던데...?#props #state
  • 배열#함수
  • 회의감#현타#나름뿌듯#고민거리#코딩#IT#CSS#JS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
u_ju

우주의 우당탕탕개발일지

내배캠 WIL & TIL

TIL) 스파르타 개발일지 23-01-12

2023. 1. 12. 16:29

모바일에서 scroll to top 버튼 구현하기.

 

첫번째 방법 모바일에서 스크롤을 구현하는 방법이 두가지가 있는데

첫번째는 ScollView이고, 두번째는 FlatList이다.

 

ScollView에서가 아닌 FlatList를 사용시에 가능한 코드

  const scrollToTop = () => { 
    setMinVisibleIndex(0);
    setMaxVisibleIndex(0);
    flatListRef.current.scrollToIndex({ index: 0, animated: true });
  };

 

 

두번째 방법.

(웹에서 썼던 방법이다. 당연히 될 수가 없지... 실패)

  // useEffect(() => {
  //   const ShowButtonClick = () => {
  //     if(window.scrollY > 200){
  //       setShowButton(true)
  //     }else{
  //       setShowButton(false)
  //     }
  //   }
  //   window.addEventListener("scroll",ShowButtonClick)
  //   return () => {
  //     window.removeEventListener("scroll", ShowButtonClick)
  //   }
  // }, []);

 

세번째 방법.

  const scrollRef = useRef();

   const scrolltoTop = () => {
  scrollRef.current?.scrollTo({
    y: 0,
    animated: true,
  });
}




return (
.
.
.
<CommunityTopBtn  onPress={scrolltoTop}> //터치 시 onPressTouch 함수가 실행
  <AntDesign name="up" size={20} color="#312070" />// 탑 버튼 이미지
</CommunityTopBtn>

<ScrollView ref={scrollRef}>
//스크롤 뷰 안에 대충 내용이 들어갈 공간
<ScrollView>

항상 해결하고 나면 기분은 좋지만... 너무 허무하다.

 

세번째 방법까지 안됐으면, FlatList로 구조를 갈아엎을 생각이였다.

(사실 엎다가 회귀함...)

 

 


뒤늦게 찾아보니 RecyclerListView라는 녀석도 있더라... 각 스크롤 뷰의 특성이 정리된 표이다.

No ScrollView FlatList RecyclerListView
메모리 관리 메모리 관리 없음 자동 메모리 관리 자동 메모리 관리 ( FlatList와 비슷함 )
렌더링 모든 콘텐츠를 한 번에 불러옴 스크롤에 따라 콘텐츠를 로드함 스크롤에 따라 콘텐츠를 로드함
Scroll Context 데이터가 갱신 된 경우, Scroll의 Position이 보존되지 않음 데이터가 갱신 됭 경우, Scroll의 Position이 보존되지 않음  데이터가 갱신 되어도, Scroll의 Position이 보존됨
Performance 눈에띄는 프레임 드랍 Data set이 많은 경우에, 눈에 띄는 프레임 드랍 발생 ( > 1500 )  프레임 드랍 없음, Performance가 가장 높음
Data update 데이터 갱신 시의 issue 있음 데이터 갱신 시의 issue 있음 Data를 갱신하거나 update 하기 좋음
사용법 import {ScrollView} from 'react-native' import {FlatList} from 'react-native' 3rd-party module을 사용해서 사용
RecyclerListView, DataProvider, LayoutProvider } from "recyclerlistview" https://github.com/Flipkart/recyclerlistview
난이도 설정하기 쉬움 설정하기 쉬움  설정하기 쉬움, 문서가 불친절

'내배캠 WIL & TIL' 카테고리의 다른 글

★WIL) 스파르타 개발일지 23-01-15  (0) 2023.01.16
TIL) 스파르타 개발일지 23-01-13  (0) 2023.01.13
TIL) 스파르타 개발일지 23-01-10  (0) 2023.01.11
★WIL) 스파르타 개발일지 23-01-08  (0) 2023.01.11
TIL) 스파르타 개발일지 23-01-06  (0) 2023.01.07
    '내배캠 WIL & TIL' 카테고리의 다른 글
    • ★WIL) 스파르타 개발일지 23-01-15
    • TIL) 스파르타 개발일지 23-01-13
    • TIL) 스파르타 개발일지 23-01-10
    • ★WIL) 스파르타 개발일지 23-01-08
    u_ju
    u_ju

    티스토리툴바