Javascript Flatlist keyExtractor返回“;TypeError:null不是对象;当数据为空时
我有以下清单:Javascript Flatlist keyExtractor返回“;TypeError:null不是对象;当数据为空时,javascript,react-native,react-native-flatlist,Javascript,React Native,React Native Flatlist,我有以下清单: <FlatList data={dataOnDevice} renderItem={({ item }) => { return ( <RowItem id={item.id} key={item.id} text={`ID: ${item.id}
<FlatList
data={dataOnDevice}
renderItem={({ item }) => {
return (
<RowItem
id={item.id}
key={item.id}
text={`ID: ${item.id} Name: ${item.name} Group: ${item.group}`}
onPress={() => {
navigation.pop();
}}
rightIcon={
<View style={styles.icon}>
<Entypo name="trash" size={20} color={colors.white} />
</View>
}
/>
);
}}
ItemSeparatorComponent={() => <RowSeparator />}
ListFooterComponent={() => (
<View style={{ paddingBottom: insets.bottom }} />
)}
ListEmptyComponent={() => listEmptyComponent()}
keyExtractor={(item) => item.id.toString()}
/>
这是在重构后发生的,重构会导致dataOnDevice
为空。我的理解是,ListEmptyComponent
应该能够处理这个问题
如何使用键提取器防止此错误
目前,我通过添加以下内容找到了解决此问题的方法:
keyExtractor={(item) => {
if (item !== "") {
item.id.toString();
}
}}
但我愿意接受任何更干净的处理方式…您应该检查ID是否为空
钥匙拔出器
if (item?.id !== "") {
通过?如果该值不返回false,则检查该值是否存在
通过这种方式,您可以知道您正在接近现有值并避免异常放炮
阅读更多关于的信息,你能解释一下项目后面的问号是什么吗?嗨@remyremy现在我已经解释清楚了,谢谢!
if (item?.id !== "") {