728x90
import React from 'react'
import { View, FlatList, StyleSheet, Dimensions } from 'react-native'
import DropdownItem from './DropdownItem'
function DropdownList({ categories, selectCategory, top, left, rate = 1 }){
return (
<View
style={[styles.dropdownShadow, {top, left, maxHeight: Dimensions.get("window").height * rate}]}
onTouchStart={(e) => { // 터치 시작점 설정 : 캡쳐링 방지 (추가)
console.log('여기를 지나침')
e.stopPropagation() // 터치 버블링 방지
}}
>
<FlatList
data={categories}
keyExtractor={item => item}
renderItem={({item}) => (
<DropdownItem category={item} selectCategory={(e) => selectCategory(item, e)}/> // 아이템 각각의 뷰 화면 : 카테고리 선택시 이벤트핸들러 함수 등록 (수정)
)}
style={styles.dropdownList}
/>
</View>
)
}
const styles = StyleSheet.create({
dropdownList: {
padding: 5,
},
dropdownShadow: {
shadowOffset: { width: 0, height: 20 },
shadowColor: '#000',
shadowOpacity: 0.25,
backgroundColor : "#fff", // invisible color
zIndex: 2,
elevation: 2,
position: 'absolute',
borderRadius: 5,
margin: 15,
},
})
export default DropdownList
components > DropdownList.js 파일을 위와 같이 수정한다.
dropdownShadow: {
shadowOffset: { width: 0, height: 20 },
shadowColor: '#000',
shadowOpacity: 0.25,
backgroundColor : "#fff", // invisible color
zIndex: 2, // 수정
elevation: 2, // 수정
position: 'absolute',
borderRadius: 5,
margin: 15,
},
상단의 날짜가 표시되는 DateHeader 컴포넌트의 zIndex가 1이므로 드롭다운 메뉴가 가려지지 않으려면 DropdwonList 컴포넌트의 zIndex 는 1보다 커야 한다.
728x90
'프로젝트 > 할일목록 앱 (RN)' 카테고리의 다른 글
25. 소셜로그인하기 - 네이버 로그인 구현하기 (라이브러리 사용 안함) (0) | 2023.11.07 |
---|---|
24. 드롭다운 선택시 선택한 아이템 상단에 표시하기 (0) | 2023.11.06 |
22. 할일목록이 없는 경우 상단에 날짜가 표시되지 않는 문제 해결하기 (0) | 2023.11.06 |
21. 할일목록과 사용자 연동하기 (0) | 2023.11.06 |
20. 미래 날짜에 저장하는 투두가 오늘날짜에 저장되는 에러 해결하기 (0) | 2023.11.06 |