J'ai essayé quelques façons de résoudre ce problème, y compris ListHeaderComponentouListFooterComponent , mais tout ne me convenait pas.
la disposition que je voulais réaliser est comme ça, et je voulais faire défiler une fois.
<ScrollView>
<View>I'm the first view</View>
<View>I'm the second view</View>
<MyFlatList />
</ScrollView>
Je veux d'abord dire merci à ce numéro et à ces commentaires, qui m'ont donné beaucoup d'idées.
Je pensais à des ListHeaderComponentendroits au-dessus de la Flatlist, mais comme ma Flatlistdirection était la colonne, l'en-tête que je voulais placer était à gauche de la Flatlist:(
Ensuite, j'ai dû essayer VirtualizedList-backedquelque chose. J'ai juste essayé d'emballer tous les composants VirtualizedList, où renderItemsdonne l'index et où je pouvais passer des composants sous condition renderItems.
J'aurais pu travailler avec Flatlist, mais je n'ai pas encore essayé.
Enfin, cela ressemble à ceci.
<View>
<Virtualizedlist
data={[]}
initialNumToRender={1}
renderItem={(props)=>{
props.index===0 ? (1st view here) : props.index===1 ? (2nd view here) : (my flatlist)
}}
keyExtractor={item => item.key}
getItemCount={2}
getItem={ (data, index) => {
return {
id: Math.random().toString(12).substring(0),
}
}}
/>
</View>
(inside which lazyly renders↓)
<View>I'm the first view</View>
<View>I'm the second view</View>
<MyFlatList />
et bien sûr capable de faire défiler tout l'écran.