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()}
/>