Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Flatlist keyExtractor返回“;TypeError:null不是对象;当数据为空时_Javascript_React Native_React Native Flatlist - Fatal编程技术网

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 !== "") {