Все еще получаю ошибку для уникального ключа при использовании извлечения ключей

#react-native #react-native-flatlist

Вопрос:

Я пытаюсь создать список элементов в react native, но я все еще получаю ошибку «У каждого дочернего элемента в списке должен быть уникальный ключ», даже несмотря на то, что вызывается опора keyExtractor. Это происходит только при первом рендеринге, что заставило меня подумать, что это проблема со временем? Я добавил несколько загрузчиков, но я все еще получаю ошибку. Я дважды проверил, что каждый ключ уникален, и это так.

Вот код:

 {showAllItems amp;amp;
 [items?.length > 0 ?
    <FlatList
      showsVerticalScrollIndicator={false}
      ListHeaderComponent={<View style={{ marginTop: 20 }} />}
      ListFooterComponent={<View style={{ marginBottom: 200 }} />}
      data={data}
      renderItem={({ item }) => (
        <SingleFeedCard data={item} reload={getUser} />
        )}
      keyExtractor={item => item.id}
      />
      :
      <Text style={styles.text}>
         Follow people or write a post to fill your Feed.
      </Text>
   ]}
 

Ответ №1:

Проблема

Вы выполняете рендеринг Flatlist внутри массива {showAllItems amp;amp; [ , что означает Flatlist , что он должен иметь key

 {showAllItems amp;amp;
 [items?.length > 0 ?
    <FlatList
      showsVerticalScrollIndicator={false}
      ListHeaderComponent={<View style={{ marginTop: 20 }} />}
      ListFooterComponent={<View style={{ marginBottom: 200 }} />}
      data={data}
      renderItem={({ item }) => (
        <SingleFeedCard data={item} reload={getUser} />
        )}
      keyExtractor={item => item.id}
      />
      :
      <Text style={styles.text}>
         Follow people or write a post to fill your Feed.
      </Text>
   ]}
 

Решение

 {showAllItems amp;amp;
 items?.length > 0 ?
    <FlatList
      showsVerticalScrollIndicator={false}
      ListHeaderComponent={<View style={{ marginTop: 20 }} />}
      ListFooterComponent={<View style={{ marginBottom: 200 }} />}
      data={data}
      renderItem={({ item }) => (
        <SingleFeedCard data={item} reload={getUser} />
        )}
      keyExtractor={item => item.id}
      />
      :(
      <Text style={styles.text}>
         Follow people or write a post to fill your Feed.
      </Text>
   )}