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?