0Pricing
React Academy · Ders

Büyük Liste Görüntüleme Sorunu

10.000 DOM düğümünü görüntülemenin performansı neden ciddi biçimde düşürdüğünü ve sanallaştırmanın bunu nasıl çözdüğünü anlayın.

Büyük Liste Görüntüleme Sorunu, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.

10000 li Öğesi Oluşturma

On bin öğeden oluşan bir dizi üzerinde dolaşıp her öğe için bir li öğesi oluşturduğunuzu varsayın. React, aynı anda ekrana yalnızca birkaç düzine öğe sığmasına rağmen görevini yerine getirerek on bin DOM düğümü oluşturur.

Bu düğümlerin çoğu ekran dışındadır ve görünmez; yine de tarayıcının her birini oluşturması, yerleşimini hesaplaması ve yönetmesi gerekir.

Büyük DOM Ağaçlarının Tarayıcı Yerleşimi Maliyeti

Tarayıcı, büyük DOM ağaçları için gerçek bir bedel öder. Yerleşim, stilin yeniden hesaplanması ve bellek kullanımı düğüm sayısıyla birlikte artar; bu nedenle çok büyük bir liste ilk oluşturmayı yavaşlatır ve bellek kullanımını artırır.

İzlenecek ve yeniden akışı hesaplanacak on binlerce düğüm olduğunda basit etkileşimlerde bile takılmalar görülebilir.

Kaydırma Performansında Bozulma

Kullanıcıların sorunu en çok hissettiği yer, çok büyük bir listede kaydırma yapmaktır. İçerik hareket ederken tarayıcı yeniden çizim yapar ve yerleşimi yeniden hesaplayabilir; düğüm sayısı çok fazla olduğunda kare hızı akıcı seviyenin altına düşer.

Sonuç, uygulamanın geri kalanı ne kadar hızlı olursa olsun arayüzü yanıt vermiyormuş gibi hissettiren takılarak ve gecikmeli kaydırmadır.

DevTools'ta Düğüm Sayısını Ölçme

Sorunu, sayfadaki DOM düğümlerinin sayısını bildiren tarayıcının DevTools Bellek panelinde doğrulayabilirsiniz. Binlerce düğüm oluşturan bir liste burada açıkça görünür.

Daha fazla öğe oluşturdukça bu sayının hızla arttığını izlemek, darboğazın DOM boyutu olduğuna dair somut kanıt sağlar.

Sanallaştırma Kavramı

Bazen pencereleme olarak da adlandırılan sanallaştırma, listenin tamamı yerine yalnızca o anda görünür olan öğeleri ve küçük bir arabelleği oluşturur. Kaydırdıkça görünür alana giren öğeler bağlanır, çıkan öğelerin bağlantısı kaldırılır.

Bu yaklaşım, verilerde kaç öğe olursa olsun canlı DOM'u küçük tutar ve DOM boyutunu veri kümesinin boyutundan bağımsızlaştırır.

Görünür Pencereyi Hesaplama

Görünür pencere, kaydırma konumundan, kapsayıcının yüksekliğinden ve öğe yüksekliğinden türetilir. Görünüm alanının yüksekliğini öğe yüksekliğine bölmek, yaklaşık olarak kaç satırın sığacağını verir; kaydırma uzaklığı da bunların hangi satırlar olduğunu gösterir.

Kütüphane, her an tam olarak hangi öğe diliminin oluşturulacağına karar vermek için bu sayıları kullanır.

react-virtualized ile react-window ve TanStack Virtual Karşılaştırması

Pencerelemeyi uygulayan birkaç kütüphane vardır. react-virtualized özellik bakımından zengindir ancak daha büyüktür; react-window aynı yazarın daha küçük ve amaca odaklanmış yeniden yazımıdır; TanStack Virtual ise modern, başlıksız bir seçenektir.

Çoğu liste için react-window, basitlik ve performans arasında mükemmel bir denge sunar; bu nedenle bu kursta ona odaklanıyoruz.

Sanallaştırma Ne Zaman Gereklidir

Sanallaştırma, listeler uzun olduğunda (kabaca birkaç yüz satır veya daha fazla) ya da satırlar görseller ve iç içe bileşenlerle ağırlaştığında yarar sağlar. DOM boyutunun gerçekten zarar verdiği durumlar bunlardır.

Sonsuz akışlar, büyük veri tabloları ve sohbet geçmişleri, pencerelemenin isteğe bağlı olmaktan çıkıp gerekli hâle geldiği tipik senaryolardır.

Ne Zaman Buna Değmez

Birkaç düzine basit öğeden oluşan kısa listelerde sanallaştırma, anlamlı bir yarar sağlamadan karmaşıklık ekler. Mutlak konumlandırma ve ölçüm yükü, toplamda performansı daha da kötüleştirebilir.

Pencerelemeyi gerçekten büyük veri kümelerine ayırın; küçük veri kümelerinde düz bir map kullanmak daha basittir ve tamamen yeterli hız sunar.

Getirisi

Pencereleme sayesinde yüz bin öğelik bir liste, DOM'da yalnızca görünür birkaç öğeyi tutar. Böylece ilk oluşturma hızlı olur, bellek kullanımı düşük kalır ve kaydırma akıcıdır.

Kurulumda biraz karmaşıklığı, performansın sahip olduğunuz veri miktarına artık bağlı olmaması karşılığında üstlenirsiniz. Sanallaştırmanın temel vaadi budur.

Hızlı Kontrol: Ne Zaman Sanallaştırılmalı

Sanallaştırmanın ne zaman yararlı olduğuna karar verin.

Özet: Büyük Liste Sorunu

Binlerce DOM düğümü oluşturmak yerleşim maliyetini ve bellek kullanımını artırır, kaydırmada takılmalara yol açar; bunu DevTools'taki düğüm sayısından doğrulayabilirsiniz. Sanallaştırma yalnızca görünür pencereyi ve bir arabelleği oluşturarak DOM'u küçük tutar.

react-window, react-virtualized ve TanStack Virtual arasındaki odaklanmış, hafif bir seçenektir. Büyük veya ağır listelerde kullanın; kısa ve basit listelerde ise kullanmayın.

Sıkça Sorulan Sorular

“Büyük Liste Görüntüleme Sorunu” dersi ücretsiz mi?

Evet — “Büyük Liste Görüntüleme Sorunu” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.

“Büyük Liste Görüntüleme Sorunu” dersinde ne öğreneceğim?

10.000 DOM düğümünü görüntülemenin performansı neden ciddi biçimde düşürdüğünü ve sanallaştırmanın bunu nasıl çözdüğünü anlayın. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

React Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Büyük Liste Görüntüleme Sorunu” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu React Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Büyük Liste Görüntüleme Sorunu
  2. FixedSizeList: Binlerce Ögeyi Görüntüleme
  3. VariableSizeList: Dinamik Satır Yükseklikleri
  4. Sanallaştırmayı Veri Getirmeyle Birleştirme
← React Academy Sayfasına Dön