JadeCode

RN ScrollView vs. FlatList 본문

개발/리액트네이티브

RN ScrollView vs. FlatList

z-zero 2022. 10. 19. 02:00

스크롤뷰는 전체 UI가 렌더링 될 떄마다 안에 있는 항목을 전부 렌더링한다.

그래서 목록이 아주 길다면 성능에 문제가 생길 수 있다.

대체는 FlatList
세부기능을 확인해 보면 보이는 항목만 렌더링하고 화면 밖의 항목은 사용자가 스크롤해야  로딩 및 렌더링된다.

<ScrollView>
    {list.map((item: string, idx: number) => {
        return (
            <View key={idx}>
            	<Text>{item}</Text>
            </View>
        );
    })}
</ScrollView>

FlasList로 변환하는 작업


커스텀매핑 지우고 프로퍼티로 추가한다.
데이터를 수동으로 매핑하는 대신 해당 작업을 flatlist로 전달해서 필요한 사항만 렌더링하는 방식으로  목록을 효율적으로 렌더링한다.

data property
목록에서 출력할 데이터를 지정하는 역할
{list.map(()=>)} 에서 list부분

renderItem property
개별 데이터 항목을 렌더링하는 방법을 flatlist에 지시하는 함수를 값으로 받는 프로퍼티

사용자가 스크롤 해서 새 항목을 렌더링할 때 할 때 함수를 호출한다.

함수 매개변수는 개별 데이터이고 데이터마다 item과 index가 객체로 부여된다.

 

keyExtractor property

매핑하는 요소들 마다 키값 부여

 

<FlatList
    data={courseGoals}
    renderItem={(renderItem) => {
        return (
            <View>
                <Text>{renderItem.item}</Text>
            </View>
        );
    }}
    keyExtractor={(item, index: any) => {
    	return index;
    }}
/>

https://reactnative.dev/docs/flatlist

 

FlatList · React Native

A performant interface for rendering basic, flat lists, supporting the most handy features:

reactnative.dev

 

'개발 > 리액트네이티브' 카테고리의 다른 글

RN navigation  (0) 2022.11.18
RN 디버깅 에러 핸들링  (0) 2022.10.30
RN styled-components  (1) 2022.10.18
RN 가상머신 설치  (0) 2022.10.17
RN 절대경로 (typescript)  (1) 2022.10.15
Comments