0Pricing
React Academy · Ders

forwardRef: DOM Referanslarını Üst Bileşenlere Açma

forwardRef'in üst bileşenlerin alt bileşenin DOM düğümüne veya bileşen örneğine erişmesini nasıl sağladığını öğrenin.

forwardRef: DOM Referanslarını Üst Bileşenlere Açma, 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.

Ref'ler Nedir ve Varsayılan Sınırlama

Ref, yeniden oluşturmaları tetiklemeden oluşturmalar arasında varlığını sürdüren bir DOM düğümüne veya bileşen örneğine başvuru tutmanın bir yoludur. Bir ref'i ref özniteliğiyle bağlarsınız ve React, DOM'a işleme işlemini tamamladıktan sonra ref.current özelliğini doldurur.

Sorun şu ki bir div'e bağladığınız şekilde bir ref'i işlev bileşenine bağlayamazsınız. Ref'ler normal özellikler gibi alt bileşenlere aktarılmadığından, üst bileşenin alt bileşenin içinde bulunan DOM düğümüne ulaşabileceği varsayılan olarak bir yol yoktur.

forwardRef Bir Bileşeni Sarar

React.forwardRef, bir bileşenin üst bileşeninden ref alıp bunu kendi öğelerinden birine aktarmasını sağlar. Bileşen işlevinizi sarar ve işlevin imzasını değiştirerek ref'in özelliklerle birlikte ikinci bir bağımsız değişken olarak gelmesini sağlar.

Bu, iç DOM düğümünü çağıran bileşene açığa çıkarmanın resmî yoludur; normalde dışarıya kapalı olan bir alt bileşeni, üst bileşenin öğesine doğrudan başvurabileceği bir bileşene dönüştürür.

forwardRef İmzası

Sarılan işlev iki parametre alır: (props, ref). Birincisi alışılmış özellik nesnesi, ikincisi ise aktarılan ref'tir. Ardından bu ref'i dışa açmak istediğiniz öğeye yayar veya bağlarsınız; örneğin iç giriş alanında ref={ref} kullanabilirsiniz.

Bu ikinci bağımsız değişkeni yalnızca forwardRef ile sarılmış bileşenlerin aldığını unutmayın. İkinci parametre olarak ref listeleyen düz bir işlev bileşeni yalnızca undefined alır.

Kullanım Örneği: Üst Bileşenden Alt Giriş Alanına Odaklanma

Klasik örnek, içindeki giriş alanına üst bileşenin odaklanmasını istediğiniz yeniden kullanılabilir bir metin alanı bileşenidir. Alanı forwardRef ile sarıp aktarılan ref'i temel giriş öğesine bağladığınızda, üst bileşen doğrudan bu öğede odaklanma işlemini çağırabilir.

Bu yaklaşım, alan bileşenini yeniden kullanılabilir tutarken gerektiği yerde denetimli emirsel erişim sağlar; örneğin bir formun ilk alanına bileşen oluşturulduğunda odaklanmak için kullanılabilir.

Alt Bileşen Öğesini Ölçme

Aktarılan ref'ler ölçüm yapılmasını da sağlar. Üst bileşen, forwardRef aracılığıyla aldığı alt bileşen öğesinde offsetWidth ve offsetHeight değerlerini okuyabilir veya getBoundingClientRect çağrısını yapabilir.

Bu özellik, üst bileşenin bir şeyi alt öğeye göre nasıl konumlandıracağına karar vermeden önce öğenin tam oluşturulmuş boyutunu veya konumunu bilmesi gereken araç ipuçları, açılır pencereler ve yerleşim hesaplamaları için kullanışlıdır.

Kaydırma Yöntemlerini Çağırma

Aktarılan ref gerçek bir DOM düğümünü gösterdiğinden, üst bileşen üzerinde yerel DOM yöntemlerini çağırabilir. Aktarılan bir liste öğesinde scrollIntoView çağrısı, öğeyi yumuşak bir geçişle görünür alana getirir; aktarılan bir kaydırma kapsayıcısında scrollTo çağrısı ise içeriğini yeniden konumlandırır.

Bunlar, bildirimsel olarak temiz bir karşılığı olmayan emirsel eylemlerdir; ref'lerin ele alması amaçlanan etkileşim türü tam olarak budur.

Bir Ref'i Birden Çok Katmandan Geçirme

Bazen dışa açmak istediğiniz öğe birkaç bileşen derinliğinde gömülü olabilir. Her ara katmanın aldığı ref'i bir sonrakine aktarması için forwardRef'i zincirleyebilir ve ref'in sonunda hedef DOM düğümüne ulaşmasını sağlayabilirsiniz.

Zincirdeki her sarmalayıcı da kendisi forwardRef kullanmalı ve ref'i aktarmalıdır; çünkü aradaki sıradan bir bileşen bağlantıyı koparır.

forwardRef + memo Bileşimi

forwardRef ve React.memo, hem ref aktarımı hem de oluşturma işlemlerinin önbelleğe alınmasını sağlamak için birleştirilebilir. Genellikle memo(forwardRef(Component)) sırası kullanılır; böylece memo karşılaştırması hâlâ uygulanırken forwardRef sonucu sarılır.

Bu kalıp, sık oluşturulan bir bileşenin hem düğümünü dışa açması hem de gereksiz yeniden oluşturmaları atlaması gereken performansa duyarlı tasarım sistemlerinde görülür.

DevTools'ta forwardRef'i Görüntüleme

React DevTools'ta bir forwardRef bileşeni, bileşen adınızı saran bir ForwardRef etiketiyle görünür. Bu, bir bileşenin ref aktarımına katıldığını bir bakışta doğrulamanızı kolaylaştırır.

İç işlevi adlandırabilir veya DevTools girdisini genel bir anonim ForwardRef etiketinden daha anlaşılır hâle getirmek için bir displayName ayarlayabilirsiniz.

forwardRef Ne Zaman NOT Kullanılır

forwardRef, veri aktarmak için değil, DOM düğümlerini ve imperatif tutamaçları dışa açmak içindir. Üst bileşenin alt bileşeni etkilemesi gerekiyorsa ref üzerinden içeri erişmek yerine normal özellikleri ve durumu tercih edin.

Ref'leri gereğinden fazla kullanmak bileşenleri sıkı biçimde birbirine bağlar ve React'in veri akışını atlar; bu da davranışı takip etmeyi zorlaştırır. forwardRef'i yalnızca bildirime dayalı bir özellik etkileşimi gerçekten ifade edemediğinde kullanın.

Modern React'te forwardRef

forwardRef, bileşen kitaplıklarında ve yeniden kullanılabilir giriş alanlarında ref'leri dışa açmak için hâlâ standart araçtır. Daha yeni React sürümleri, ref'in normal bir özellik olarak aktarılmasına doğru ilerliyor; ancak forwardRef hâlâ yaygın olarak kullanılmakta ve anlaşılması önemini korumaktadır.

forwardRef'i iyi bilmek, sizi hem mevcut kod tabanlarına hem de gelecekteki ref-as-prop sözdiziminin temelini oluşturan mekanizmalara hazırlar.

Hızlı Kontrol: forwardRef İmzası

Bir forwardRef bileşeninin ref'ini nasıl aldığını anlayıp anlamadığınızı sınayın.

Özet: forwardRef

forwardRef, bileşene ikinci bir ref bağımsız değişkeni verip bunu içteki bir öğeye aktarmasını sağlayarak üst bileşenin alt bileşenin DOM düğümüne ulaşamaması sınırlamasını çözer. Bu, alt bileşen öğelerine odaklanmayı, bunları ölçmeyi ve kaydırmayı mümkün kılar.

memo ile birleştirilebilir, katmanlar boyunca zincirlenebilir ve DevTools'ta ForwardRef olarak görünür. Bunu veri aktarmak için değil, özelliklerin daha iyi ele aldığı emirsel DOM erişimi için kullanın.

Sıkça Sorulan Sorular

“forwardRef: DOM Referanslarını Üst Bileşenlere Açma” dersi ücretsiz mi?

Evet — “forwardRef: DOM Referanslarını Üst Bileşenlere Açma” 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.

“forwardRef: DOM Referanslarını Üst Bileşenlere Açma” dersinde ne öğreneceğim?

forwardRef'in üst bileşenlerin alt bileşenin DOM düğümüne veya bileşen örneğine erişmesini nasıl sağladığını öğrenin. 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.

“forwardRef: DOM Referanslarını Üst Bileşenlere Açma” 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. forwardRef: DOM Referanslarını Üst Bileşenlere Açma
  2. useImperativeHandle: Özel Örnek Değerleri
  3. Buyurgan Bileşen API'si Oluşturma
  4. Buyurgan ve Bildirimsel API'ler Ne Zaman Kullanılmalı
← React Academy Sayfasına Dön