Setelah meningkatkan ke reaksi-asli 0,61 saya mendapatkan banyak peringatan seperti itu:
VirtualizedLists should never be nested inside plain ScrollViews with the same orientation - use another VirtualizedList-backed container instead.
Apa VirtualizedList-backed container
yang harus saya gunakan, dan mengapa sekarang disarankan untuk tidak menggunakan seperti itu?
javascript
reactjs
react-native
David Schilling
sumber
sumber
Jawaban:
Jika seseorang masih mencari saran untuk masalah yang dijelaskan oleh @Ponleu dan @David Schilling di sini (mengenai konten yang melampaui FlatList), maka inilah pendekatan yang saya ambil:
Anda dapat membaca lebih lanjut tentang ini di sini: https://facebook.github.io/react-native/docs/flatlist#listheadercomponent
Semoga ini membantu seseorang. :)
sumber
ScrollView
danFlatList
- Anda akan mendapatkan perilaku gulir yang tidak konsisten. Cara yang disajikan dalam jawaban ini hanya menghasilkan 1 wadah gulir dan di Header / Footer Anda dapat menempatkan tampilan apa pun, betapa pun rumitnya.useMemo
kait yang disediakan oleh React, untuk menghindari render ulang. Informasi lebih lanjut di sini: reactjs.org/docs/hooks-reference.html#usememo Biarkan saya jika ini membantu. :)Kalau-kalau ini membantu seseorang, ini adalah bagaimana saya memperbaiki kesalahan dalam kasus saya.
Saya memiliki
FlatList
sarang di dalamScrollView
:dan saya menyingkirkannya
ScrollView
dengan menggunakanFlatList
untuk membuat semua yang saya butuhkan, yang menghilangkan peringatan:sumber
Melihat contoh-contoh dalam dokumen saya telah mengubah wadah dari:
untuk:
dan semua peringatan itu hilang.
sumber
FlatList
bagian dalamScrollView
dan ingin konten tersebut dapat digulir?ScrollView
beberapa kontenFlatList
di dalamnya dan kemudian juga di dalamnyaScrollView
. Dan saya ingin seluruh layar untuk bergeser bersama.Menurut pendapat saya, saya bisa menggunakan peta, bukan FlatList. Tetapi dalam kasus saya, saya tidak ingin menampilkan daftar besar. Tidak menggunakan FlatList dapat menyebabkan masalah kinerja. jadi saya menggunakan ini untuk menekan peringatan https://github.com/GeekyAnts/NativeBase/issues/2947#issuecomment-549210509
sumber
Peringatan muncul karena
ScrollView
danFlatList
berbagi logika yang sama, jikaFlatList
dijalankan di dalamScrollView
, itu diduplikasiNgomong-ngomong
SafeAreaView
tidak bekerja untukku, satu-satunya cara untuk menyelesaikannya adalahKesalahan hilang
sumber
Saya mencoba beberapa cara untuk menyelesaikan ini, termasuk
ListHeaderComponent
atauListFooterComponent
, tetapi semuanya tidak cocok untuk saya.tata letak yang ingin saya capai adalah seperti ini, dan saya ingin digulir sekali.
Pertama saya ingin mengucapkan terima kasih atas masalah dan komentar ini, yang memberi saya banyak ide.
Saya memikirkan
ListHeaderComponent
tempat di atas Flatlist, tetapi karenaFlatlist
arah saya adalah kolom, tajuk yang ingin saya tempatkan berada di sebelah kiriFlatlist
:(Kemudian saya harus mencoba
VirtualizedList-backed
sesuatu. Saya hanya mencoba untuk mengemas semua komponenVirtualizedList
, di manarenderItems
memberikan indeks dan di sana saya dapat melewati komponen bersyaratrenderItems
.Saya bisa bekerja dengan ini
Flatlist
, tetapi saya belum mencoba.Akhirnya terlihat seperti ini.
dan tentu saja dapat menggulir seluruh layar.
sumber
Masalah ini muncul saat Anda menggunakan
<FlatList />
bagian dalam<ScrollView>
dengan orientasi yang sama.Untuk memperbaiki ini, cukup tambahkan "horisontal" ke FlatList Anda:
NB: FlatList Anda akan dirender secara horizontal
sumber