Troubleshooting

[react-native]SwipeListView에서 rowMap[key]가 안될시, undefined가 나올때

한상규 2020. 8. 31. 15:02

                        

 

keyExtractor를 설정해서 item.SN값을 키로 사용한다고 선언했는데

 

막상 rowMap[]으로 접근하면 안된다.

 

data={} 설정해주는 부분에 "key"라는 키값을 가지고 있는 데이터가 있는지 살펴보자

 

SwipeListView가 자동으로 키값이 "key"인 데이터를 읽어서 SwipeListView의 키로 사용하면서 

 

rowMap[]에 제대로 접근이 안되는 오류가 발생한다.

 

해결법 : "key"를 "license_key"로 바꾸면 된다. 

 

<SwipeListView 
	data={DATA}
	renderItem={({ item, index }) => <LicenseRow
		SN={item.SN}
		name={item.name}
		exdate={item.exdate}
		license_key={item.license_key}
		about={item.about}
		attach={item.attach}
		displayname={item.displayname}
		tag={item.tag} />}
	keyExtractor={( item, index) => {
		if(item.SN){
			return item.SN.toString(); // key를 지정해준다.
		}
	}}
	renderHiddenItem={ (data, rowMap) => (
		<View style={{flex: 1,
			flexDirection: 'row',
			padding: 10,
			marginLeft:16,
			marginRight:16,
			marginTop: 8,
			marginBottom: 8,
			borderRadius: 5,
			}}>
			<TouchableOpacity onPress={()=>{goEditPage(data.item.SN, data.item.name, data.item.exdate, data.item.license_key, data.item.about, data.item.attach, data.item.displayname, data.item.tag); rowMap[data.item.SN].closeRow();}}>
				<Feather name="edit" style={{width : 75, padding:10}} size={24} color="black" />
			</TouchableOpacity>
			<Text style={{flex : 1}}></Text>
			<TouchableOpacity onPress={()=>{deleteLicense(data.item.SN); rowMap[data.item.SN].closeRow();}}>
				<MaterialCommunityIcons name="trash-can-outline" style={{width : 75, paddingLeft:37, padding : 11}} size={24} color="red" />
			</TouchableOpacity>
		</View>
	)}
	leftOpenValue={75}
	rightOpenValue={-75}
	refreshing={console.log()}
	onRefresh={console.log()}
/>