0Pricing
React Academy · Pelajaran

VariableSizeList: Tinggi Baris Dinamis

Tangani item dengan tinggi berbeda menggunakan VariableSizeList dan pola callback itemSize.

VariableSizeList: Tinggi Baris Dinamis adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Saat Elemen Memiliki Tinggi yang Berbeda

Terkadang baris tidak seragam: daftar percakapan mencampur pesan pendek dan panjang, atau sebuah umpan memiliki kartu dengan isi yang beragam. FixedSizeList tidak dapat menangani hal ini karena mengasumsikan satu itemSize yang konstan.

Untuk kasus-kasus ini, react-window menyediakan jenis daftar yang memungkinkan setiap elemen menentukan ukurannya sendiri.

VariableSizeList Menggantikan FixedSizeList

VariableSizeList bekerja seperti FixedSizeList, tetapi menerima ukuran untuk setiap elemen. Anda mengimpornya sebagai gantinya dan menyediakan fungsi yang mengembalikan ukuran untuk indeks tertentu.

Hal lainnya, yaitu fungsi perenderan anak dan properti gaya yang penting, tetap sama, sehingga proses perpindahannya kecil.

itemSize sebagai Fungsi

Dengan VariableSizeList, itemSize adalah fungsi yang menerima indeks dan mengembalikan tinggi baris tersebut dalam piksel. react-window memanggilnya untuk menghitung offset dan menentukan jendela yang terlihat.

Dengan cara ini, Anda dapat menyandikan tinggi yang sudah diketahui, misalnya baris yang lebih tinggi untuk elemen dengan gambar dan baris yang lebih pendek untuk teks biasa.

Menghitung Sebelumnya vs Mengukur

Jika Anda sudah mengetahui tinggi setiap baris sebelumnya, Anda dapat langsung mengembalikannya dari fungsi itemSize. Jika tinggi bergantung pada isi yang dirender, Anda harus mengukur baris setelah selesai digambar.

Tinggi yang dihitung sebelumnya adalah pilihan paling sederhana dan cepat; tinggi yang diukur lebih fleksibel, tetapi memerlukan pekerjaan tambahan untuk memasukkan ukuran kembali ke dalam daftar.

resetAfterIndex Setelah Pengukuran

VariableSizeList menyimpan offset elemen dalam tembolok demi kinerja. Saat tinggi yang diukur berubah, Anda harus memanggil metode resetAfterIndex pada referensi daftar agar daftar menghitung ulang posisi mulai dari indeks tersebut.

Jika langkah ini dilupakan, offset yang sudah usang dan baris yang tidak sejajar akan tersisa, sehingga resetAfterIndex menjadi kunci agar pengukuran dinamis dapat berfungsi.

Dilema Tinggi

Ada masalah yang saling bergantung: Anda memerlukan tinggi untuk merender baris, tetapi baru mengetahui tinggi sebenarnya setelah baris dirender. Daftar harus menempatkan baris terlebih dahulu sebelum dapat mengukurnya.

Untuk mengatasinya, Anda harus merender dengan perkiraan terlebih dahulu, lalu memperbaikinya setelah tinggi sebenarnya diketahui.

Perkirakan, Render, Ukur, Perbarui

Pola standarnya adalah merender baris dengan tinggi perkiraan, mengukur tinggi sebenarnya setelah selesai digambar menggunakan ref atau ResizeObserver, menyimpan nilai yang diukur, lalu memanggil resetAfterIndex untuk memperbarui posisi.

Putaran ini cepat mencapai hasil yang stabil, sehingga daftar menetap pada offset yang benar setelah pengukuran pertama.

getItemSize Harus Stabil

Fungsi itemSize harus stabil di antara proses perenderan, biasanya dengan membungkusnya dalam useCallback, agar daftar tidak terus-menerus membatalkan tembolok offsetnya.

Fungsi yang tidak stabil dan didefinisikan secara langsung dapat memaksa penghitungan ulang yang tidak perlu, sehingga merusak kinerja yang seharusnya diberikan oleh virtualisasi.

Kompromi Performa

VariableSizeList melakukan lebih banyak pekerjaan daripada FixedSizeList karena tidak dapat mengasumsikan posisi yang konstan dan harus melacak ukuran setiap elemen. Saat tinggi diukur, pengukuran tambahan juga menambah biaya.

Untuk daftar yang barisnya memang bervariasi, biaya ini sepadan; untuk baris yang seragam, FixedSizeList tetap menjadi pilihan yang lebih cepat dan sederhana.

Beralih ke Ukuran Tetap dengan Perkiraan

Jika pengukuran dinamis yang tepat terlalu mahal, Anda terkadang dapat menggunakan perkiraan. Mengelompokkan baris ke dalam beberapa kelas tinggi tetap atau menggunakan rata-rata yang wajar dapat memungkinkan Anda tetap memakai FixedSizeList.

Hal ini menukar tata letak yang sempurna hingga tingkat piksel dengan kesederhanaan dan kecepatan, sebuah kompromi yang dapat diterima ketika ketidaksempurnaan kecil pada posisi masih dapat ditoleransi.

Pemeriksaan Cepat: itemSize pada VariableSizeList

Ingat kembali cara VariableSizeList mempelajari tinggi setiap baris.

Ringkasan: VariableSizeList

VariableSizeList menangani baris dengan tinggi yang berbeda-beda dengan menerima itemSize sebagai fungsi dari indeks. Tinggi dapat dihitung sebelumnya atau diukur; tinggi yang diukur memerlukan perulangan perkiraan–tampilkan–ukur–perbarui dengan resetAfterIndex.

Pertahankan kestabilan fungsi itemSize dengan useCallback. Biayanya lebih besar daripada FixedSizeList, jadi untuk baris yang seragam atau ketika perkiraan sudah memadai, pilih varian tetap.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “VariableSizeList: Tinggi Baris Dinamis” gratis?

Ya — teks lengkap “VariableSizeList: Tinggi Baris Dinamis” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “VariableSizeList: Tinggi Baris Dinamis”?

Tangani item dengan tinggi berbeda menggunakan VariableSizeList dan pola callback itemSize. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “VariableSizeList: Tinggi Baris Dinamis” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Masalah Rendering Daftar Besar
  2. FixedSizeList: Merender Ribuan Item
  3. VariableSizeList: Tinggi Baris Dinamis
  4. Menggabungkan Virtualisasi dengan Pengambilan Data
← Kembali ke React Academy