상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 리액트 네이티브에서 리스트를 구현하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
리액트 네이티브에서 리스트를 구현하는 방법은 여러 가지가 있지만, 가장 일반적으로 사용되는 컴포넌트는 `<a href='https://sangseek.com/sangseeks/FlatList/ko'>FlatList</a>`와 `SectionList`입니다. 이 두 컴포넌트는 성능이 뛰어나고, 대량의 데이터를 효율적으로 렌더링할 수 있도록 설계되었습니다. 아래에서는 `FlatList`와 `SectionList`를 사용하는 방법에 대해 자세히 설명하겠습니다. 1. FlatList `FlatList`는 단일 섹션의 스크롤 가능한 리스트를 구현할 때 사용됩니다. 기본적인 사용법은 다음과 같습니다. 기본 사용법 ```javascript import React from 'react'; import { FlatList, Text, View, StyleSheet } from 'react-native'; const DATA = [ { id: '1', title: 'Item 1' }, { id: '2', title: 'Item 2' }, { id: '3', title: 'Item 3' }, // ... 더 많은 데이터 ]; const Item = ({ title }) => ( <View style={styles.item}> <Text style={styles.title}>{title}</Text> </View> ); const App = () => { const renderItem = ({ item }) => <Item title={item.title} />; return ( <FlatList data={DATA} renderItem={renderItem} keyExtractor={item => item.id} /> ); }; const styles = StyleSheet.create({ item: { padding: 20, marginVertical: 8, marginHorizontal: 16, backgroundColor: ' f9c2ff', }, title: { fontSize: 32, }, }); export default App; ``` 주요 Props - `data`: 리스트에 표시할 데이터 배열입니다. - `renderItem`: 각 항목을 렌더링하는 함수입니다. - `keyExtractor`: 각 항목의 고유 키를 반환하는 함수입니다. 성능 최적화를 위해 필수입니다. - `horizontal`: 리스트를 수평으로 스크롤할지 여부를 결정합니다. - `onEndReached`: 리스트의 끝에 도달했을 때 호출되는 함수입니다. 무한 스크롤 구현에 유용합니다. 2. SectionList `SectionList`는 여러 섹션으로 나누어진 리스트를 구현할 때 사용됩니다. 각 섹션은 제목과 항목으로 구성됩니다. 기본 사용법 ```javascript import React from 'react'; import { SectionList, Text, View, StyleSheet } from 'react-native'; const DATA = [ { title: 'Section 1', data: ['Item 1-1', 'Item 1-2', 'Item 1-3'], }, { title: 'Section 2', data: ['Item 2-1', 'Item 2-2', 'Item 2-3'], }, // ... 더 많은 섹션 ]; const App = () => { const renderItem = ({ item }) => ( <View style={styles.item}> <Text>{item}</Text> </View> ); const renderSectionHeader = ({ section: { title } }) => ( <Text style={styles.header}>{title}</Text> ); return ( <SectionList sections={DATA} renderItem={renderItem} renderSectionHeader={renderSectionHeader} keyExtractor={(item, index) => item + index} /> ); }; const styles = StyleSheet.create({ item: { padding: 20, marginVertical: 8, marginHorizontal: 16, backgroundColor: ' f9c2ff', }, header: { fontSize: 24, backgroundColor: ' fff', }, }); export default App; ``` 주요 Props - `sections`: 섹션 데이터 배열입니다. 각 섹션은 제목과 데이터 배열을 포함합니다. - `renderSectionHeader`: 각 섹션의 헤더를 렌더링하는 함수입니다. - `stickySectionHeadersEnabled`: 섹션 헤더가 스크롤 시 상단에 고정될지 여부를 결정합니다. 3. 성능 최적화 리스트의 성능을 최적화하기 위해 다음과 같은 방법을 사용할 수 있습니다. - getItemLayout : 항목의 크기가 일정할 경우, 이 함수를 사용하여 성능을 개선할 수 있습니다. - initialNumToRender : 초기 렌더링 시 표시할 항목의 수를 설정합니다. - windowSize : 스크롤 시 미리 렌더링할 항목의 수를 조정합니다. - removeClippedSubviews : 화면에 보이지 않는 항목을 제거하여 메모리 사용량을 줄입니다. 4. 결론 리액트 네이티브에서 리스트를 구현하는 것은 `FlatList`와 `SectionList`를 통해 간단하고 효율적으로 할 수 있습니다. 각 컴포넌트의 특성과 사용법을 이해하고, 성능 최적화 기법을 적용하면 대량의 데이터를 효과적으로 처리할 수 있습니다. 이러한 리스트 컴포넌트를 활용하여 사용자에게 매끄럽고 반응성이 뛰어난 경험을 제공할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기