Wypróbowałem kilka sposobów rozwiązania tego problemu, w tym ListHeaderComponentlub ListFooterComponent, ale to wszystko nie pasowało do mnie.
układ, który chciałem osiągnąć, jest taki i chciałem raz przewinąć.
<ScrollView>
<View>I'm the first view</View>
<View>I'm the second view</View>
<MyFlatList />
</ScrollView>
Najpierw chcę powiedzieć dzięki temu problemowi i komentarzom, które dały mi mnóstwo pomysłów.
Myślałem o ListHeaderComponentmiejscach nad płaską listą, ale ponieważ moim Flatlistkierunkiem była kolumna, nagłówek, który chciałem umieścić, znajdował się po lewej stronie Flatlist:(
Potem musiałem spróbować VirtualizedList-backed. Właśnie próbowałem spakować wszystkie komponenty VirtualizedList, gdzie renderItemsdaje indeks i tam mogłem warunkowo przekazać komponenty renderItems.
Mógłbym z tym pracować Flatlist, ale jeszcze nie próbowałem.
Wreszcie wygląda to tak.
<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 />
i oczywiście w stanie przewijać cały ekran.