Aplikasi kami menggunakan pengguliran tak terbatas untuk menavigasi daftar besar item heterogen. Ada beberapa kerutan:
- Sangat umum bagi pengguna kami untuk memiliki daftar 10.000 item dan perlu menggulir 3k +.
- Ini adalah item kaya, jadi kami hanya dapat memiliki beberapa ratus di DOM sebelum kinerja browser menjadi tidak dapat diterima.
- Item memiliki ketinggian yang berbeda-beda.
- Item mungkin berisi gambar dan kami mengizinkan pengguna untuk melompat ke tanggal tertentu. Ini rumit karena pengguna bisa melompat ke satu titik dalam daftar tempat kita perlu memuat gambar di atas viewport, yang akan mendorong konten ke bawah saat dimuat. Gagal menangani itu berarti bahwa pengguna dapat melompat ke tanggal tertentu, tetapi kemudian dialihkan ke tanggal yang lebih awal.
Solusi yang diketahui dan tidak lengkap:
( react-infinite-scroll ) - Ini hanyalah komponen sederhana "memuat lebih banyak saat kita mencapai bagian bawah". Itu tidak menyisihkan DOM mana pun, sehingga akan mati pada ribuan item.
( Scroll Position with React ) - Menunjukkan cara menyimpan dan mengembalikan posisi scroll saat memasukkan di bagian atas atau memasukkan di bagian bawah, tetapi tidak keduanya bersamaan.
Saya tidak mencari kode untuk solusi lengkap (meskipun itu akan bagus.) Sebaliknya, saya mencari "cara Bereaksi" untuk memodelkan situasi ini. Apakah status posisi gulir atau tidak? Status apa yang harus saya lacak untuk mempertahankan posisi saya di daftar? Keadaan apa yang perlu saya pertahankan agar saya memicu render baru saat saya menggulir di dekat bagian bawah atau atas apa yang dirender?
lihat di http://adazzle.github.io/react-data-grid/index.html# Ini terlihat seperti datagrid yang kuat dan berkinerja dengan fitur seperti Excel dan pemuatan lambat / rendering yang dioptimalkan (untuk jutaan baris) dengan fitur pengeditan yang kaya (berlisensi MIT). Belum mencoba dalam proyek kami tetapi akan segera melakukannya.
Sumber yang bagus untuk mencari hal-hal seperti ini juga http://react.rocks/ Dalam kasus ini, pencarian tag sangat membantu: http://react.rocks/tag/InfiniteScroll
sumber
Saya menghadapi tantangan serupa untuk memodelkan pengguliran tak terbatas satu arah dengan ketinggian item yang heterogen dan karenanya membuat paket npm dari solusi saya:
https://www.npmjs.com/package/react-variable-height-infinite-scroller
dan demo: http://tnrich.github.io/react-variable-height-infinite-scroller/
Anda dapat memeriksa kode sumber untuk logikanya, tetapi pada dasarnya saya mengikuti resep @Vjeux yang diuraikan dalam jawaban di atas. Saya belum mencoba melompat ke item tertentu, tetapi saya berharap untuk segera menerapkannya.
Berikut inti dari tampilan kode saat ini:
sumber