0Pricing
React Academy · Ders

Animasyon Öncesi Ölçümler için useLayoutEffect

Yerleşim kaymalarını önlemek için animasyonlar başlamadan önce öğe boyutlarını ölçmek üzere useLayoutEffect kullanın.

Animasyon Öncesi Ölçümler için useLayoutEffect, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 3. 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.

Görüntü Titremesi Sorunu

Bazen bir öğe, yerli yerine oturmadan önce ilk kez görüntülenirken gözle görülür biçimde sıçrar veya titrer. Bu genellikle tarayıcı öğeyi zaten ekrana çizdikten sonra ölçmeniz ya da yeniden konumlandırmanız nedeniyle olur.

Kullanıcı tek bir kare boyunca yanlış konumu görür, ardından ani bir düzeltmeyle karşılaşır; bu da arayüzün bozuk görünmesine yol açar.

useEffect Neden Görüntü Titremesine Yol Açar

useEffect, tarayıcı çizim yaptıktan sonra çalışır. Bu nedenle useEffect içinde bir ölçümü okuyup DOM'u güncellerseniz, değişikliğiniz uygulanmadan önce kullanıcı düzeltilmemiş kareyi zaten görmüştür.

Kullanıcıdan gizlenmesi gereken görsel konumlandırmalarda çizim sonrası zamanlama çok geç kalır.

useLayoutEffect Çizimden Önce Çalışır

useLayoutEffect, React DOM'u değiştirdikten hemen sonra ve tarayıcı çizim yapmadan önce eşzamanlı olarak çalışır. Orada yaptığınız her DOM okuma veya yazma, kullanıcı tek bir kare görmeden önce uygulanır.

Bu nedenle anında doğru görünmesi gereken ölçüm ve konumlandırmalar için doğru araçtır.

Başlangıç Konumunu Ölçme

useLayoutEffect içinde, animasyon uygulamadan önce konumunu ve boyutunu yakalamak için bir öğenin yerleşimini ref.current.getBoundingClientRect() ile okuyabilirsiniz.

Bu işlem çizimden önce gerçekleştiği için başlangıç dönüşümünü ölçüp uygularken görünür bir titreme oluşmaz.

FLIP Tekniği

FLIP; İlk, Son, Tersine Çevirme ve Oynatma aşamalarının baş harflerinden oluşur. Öğenin İlk konumunu kaydedersiniz, Son konumuna geçmesini beklersiniz, ardından öğeyi görsel olarak İlk konumuna geri getiren bir dönüşüm uygulayarak Tersine Çevirirsiniz. Son olarak dönüşümü kaldırarak Oynatırsınız; böylece öğe Son konumuna doğru animasyonla ilerler.

Gerçek yerleşim anında sıçramış olsa bile bu yöntem, yerleşim değişikliklerini yalnızca performans açısından hafif olan transform ile canlandırmanızı sağlar.

getBoundingClientRect ve useLayoutEffect

Önemli okumalar useLayoutEffect içinde yapılır: değişiklikten önce İlk dikdörtgeni, değişiklikten sonra Son dikdörtgeni yakalayın ve ardından farkı hesaplayın. Bunu çizimden önce yapmak, ters dönüşümün herhangi bir şey gösterilmeden önce uygulanmasını garanti eder.

İki dikdörtgen arasındaki fark, tersine çevirmek için gereken tam öteleme ve ölçeklendirme değerlerini verir.

Dönüşümü Eşzamanlı Uygulama

Tersine çeviren dönüşümü useLayoutEffect içinde eşzamanlı olarak ayarlayın, ardından öğenin doğal konumuna animasyonla ilerlemesi için sonraki karede bu dönüşümü kaldırın. Oynatma adımını genellikle requestAnimationFrame ile tetiklersiniz.

Ters dönüşüm çizimden önce uygulandığı için kullanıcı öğeyi işlenmemiş Son konumunda hiçbir zaman görmez.

SSR Uyarısı

Sunucuda DOM bulunmaz; bu nedenle React, useLayoutEffect'in sunucu tarafında işleme sırasında hiçbir şey yapmadığına dair bir uyarı kaydeder. Yerleşim etkileri yalnızca tarayıcıda anlamlıdır.

Bu uyarı, ölçülecek hiçbir şey olmayan bir ortamda etkinin çalışamayacağını belirtir.

SSR Uyumlu Alternatif

Bir bileşenin sunucuda çalışması gerekiyorsa ölçümünüzü bir sonraki çizimden önce yapmak için useEffect ile birlikte requestAnimationFrame kullanın veya useLayoutEffect'i yalnızca tarayıcıda koşullu olarak kullanın.

Bu yöntem, kritik olmayan animasyonlar için çizim öncesine yakın bir zamanlama sağlarken uyarıyı önler.

Genişleyen Akordeon Örneği

Yükseklik animasyonu klasik bir örnektir: daraltılmış ve genişletilmiş yükseklikleri useLayoutEffect içinde ölçün, ardından geçişin düzgün olması için açık piksel değerleri arasında animasyon uygulayın.

auto yüksekliği canlandırılamadığı için gerçek yüksekliği önceden ölçmek, belirli bir sayısal değere geçiş yapmanızı sağlar.

useLayoutEffect Ne Zaman Kullanılmalı

Çoğu iş için varsayılan olarak useEffect'i kullanın. useLayoutEffect'i yalnızca yerleşimi okuduğunuz ve görünür bir titremeyi önlemek için çizimden önce DOM'u değiştirmeniz gerektiğinde kullanın.

Aşırı kullanımı performansı olumsuz etkileyebilir; çünkü tamamlanana kadar çizimi engeller.

Hızlı Kontrol

Etki zamanlamasını anlayıp anlamadığınızı sınayın.

Özet

Titreme sorununun çizimden sonra ölçüm yapmaktan kaynaklandığını, useLayoutEffect'in çizimden önce çalıştığını ve FLIP tekniğinin yerleşim değişikliklerini performans açısından hafif dönüşümlerle nasıl canlandırdığını öğrendiniz.

Ayrıca SSR uyarısını ve useEffect ile requestAnimationFrame kullanan bir alternatifi gördünüz.

Sıkça Sorulan Sorular

“Animasyon Öncesi Ölçümler için useLayoutEffect” dersi ücretsiz mi?

Evet — “Animasyon Öncesi Ölçümler için useLayoutEffect” 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.

“Animasyon Öncesi Ölçümler için useLayoutEffect” dersinde ne öğreneceğim?

Yerleşim kaymalarını önlemek için animasyonlar başlamadan önce öğe boyutlarını ölçmek üzere useLayoutEffect kullanı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 3. dersidir.

“Animasyon Öncesi Ölçümler için useLayoutEffect” 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. React Durum Değişiklikleriyle CSS Geçişleri
  2. React ile CSS Kare Animasyonları
  3. Animasyon Öncesi Ölçümler için useLayoutEffect
  4. Kütüphane Olmadan Giriş ve Çıkış Animasyonları
← React Academy Sayfasına Dön