Рендеринг встроенного плоского списка только после прокрутки

#reactjs #react-native

#reactjs #react-native

Вопрос:

У меня есть плоский список, который, как ни странно, корректно отображается только после прокрутки. Кроме того, при обновлении он отображается на долю секунды, а затем снова исчезает. Сам плоский список содержит только 3 элемента.

Плоский список определяется следующим образом в представлении:

 <View style={{flex: 1}}>
  <FlatList
      data={cartItems}
      renderItem={({item}) => (
          <CartItemCard
              event={item.event_name}
              ticketType={item.title}
              ticketImage={item.image}
              price={item.price}
          />
      )}
      keyExtractor={item => item.id}
      style={{
          flex: 1,
          backgroundColor: "#49424D",
          paddingVertical: 60,
      }}
      contentContainerStyle={{
          alignItems: 'center',
          paddingVertical: 10,
      }}
  />
</View> 

Вы хоть представляете, что я делаю неправильно?

Ответ №1:

Похоже, это известная проблема: https://github.com/facebook/react-native/issues/13316

Согласно документу, вы должны передать ExtraData в FlatList, чтобы он знал о повторном рендеринге:

Передавая extrad={selectedId} в FlatList, мы гарантируем, что сам FlatList будет повторно отображаться при изменении состояния. Без установки этого реквизита FlatList не будет знать, что ему нужно повторно отображать какие-либо элементы, потому что это PureComponent, и сравнение реквизита не покажет никаких изменений.