DndContext, useDraggable ve useDroppable
DndContext sağlayıcısını bağlayıp ilgili kancaları kullanarak sürüklenebilir ve bırakılabilir ögeler oluşturun
DndContext, useDraggable ve useDroppable, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 2. 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.
Özelliğinizi DndContext ile Sarmalama
dnd-kit'teki her sürükle ve bırak özelliği bir DndContext bileşeniyle sarılmalıdır. DndContext koordinasyon merkezidir: etkin sürüklemeleri izler, sürüklenebilirlerle bırakılabilirler arasındaki iletişimi sağlar ve olay geri çağırmalarını çalıştırır. Genellikle bunu sürükleme durumunu yöneten bileşen düzeyine yerleştirirsiniz.
useDraggable Kancasının Yapısı
useDraggable({ id }) kancası bir bileşeni sürüklenebilir hâle getirir. Dört temel değer döndürür: öznitelikler (öğe üzerine yayılacak ARIA özellikleri), olay işleyicileri (sürüklemeyi başlatan olay işleyicileri), setNodeRef (sürüklenebilir başvurusunu bağlar) ve dönüşüm (geçerli çeviriyi {x, y, scaleX, scaleY} olarak belirtir).
useDraggable'ı Bir Öğeye Uygulama
Sürüklenebilir bir öğeyi bağlamak için attributes ve listeners değerlerini öğeye yayın ve setNodeRef değerini ref prop'u olarak geçirin. Öznitelikler arasında role="button", tabIndex ve ARIA özellikleri bulunur. Olay işleyicileri, dnd-kit'in sürükleme başlangıcını algılamak için ihtiyaç duyduğu fare, dokunmatik ekran ve klavye olaylarını bağlar.
Dönüşüm Stilini Uygulama
useDraggable'dan gelen transform değeri sürükleme yapılmadığında null, sürükleme sırasında ise bir koordinat nesnesidir. Bu değeri @dnd-kit/utilities paketindeki CSS.Translate.toString(transform) ile bir CSS dizesine dönüştürün. Öğenin imleci görsel olarak izlemesi için bunu sürüklenebilir öğedeki transform CSS özelliğine uygulayın.
useDroppable Kancasının Yapısı
useDroppable({ id }) kancası bir kapsayıcıyı geçerli bir bırakma hedefi olarak işaretler. isOver (sürüklenebilir bir öğe bu bırakılabilir öğenin üzerinde durduğu sürece true olan bir boole değeri) ve başvuruyu bırakılabilir öğeye bağlamak için setNodeRef değerlerini döndürür. useDraggable'ın aksine yayınlanacak olay işleyicileri yoktur.
isOver ile Görsel Geri Bildirim
useDroppable'dan gelen isOver değeri, sürükleme sırasında görsel geri bildirim sağlamanıza olanak tanır. isOver true olduğunda bırakma bölgesine vurgu rengi, kenarlık veya arka plan değişikliği uygulayabilirsiniz. Bu, kullanıcıların öğeyi nereye bırakabileceklerini anlamasına yardımcı olur; bu da kullanılabilirlik ve erişilebilirlik açısından kritik öneme sahiptir.
onDragEnd: Sonucu Okuma
DndContext üzerindeki onDragEnd geri çağırması, iki önemli özelliğe sahip bir olay nesnesi alır: event.active sürüklenen öğeyi (özellikle id değerini), event.over ise bırakma hedefini içerir; öğe herhangi bir bırakılabilir alanın dışına bırakıldıysa bu değer null olur. Uygulama durumunuzu güncellemek için bu kimlikleri kullanırsınız.
Bırakma Sonrasında Durumu Güncelleme
onDragEnd içinde, event.over değerinin boş olmadığını kontrol ettikten sonra, taşımayı yansıtacak şekilde durumunuzu güncellersiniz. Örneğin, bir Kanban panosunda bir kartı sütunlar arasında taşıyorsanız kartı kaynak sütundan kaldırır ve event.over.id tarafından tanımlanan hedef sütuna eklersiniz.
Yüzen Önizleme için DragOverlay
DragOverlay, imleci takip eden, sürüklenen öğenin yüzen bir önizlemesini oluşturur. Normal DOM ağacının dışında bir portal olarak oluşturulduğu için taşması gizlenen kapsayıcılar tarafından hiçbir zaman kırpılmaz. Özgün öğeden farklı olarak kaplama, sürüklendiğini belirtmek için gölgeler, ölçek dönüşümleri veya döndürme kullanabilir.
Kaplama için activeDragId Takibi
DragOverlay içinde doğru içeriği oluşturmak için, onDragStart geri çağırma işlevini kullanarak o anda sürüklenen öğeyi takip edin. Etkin ID'yi durum içinde saklayın: setActiveDragId(event.active.id). onDragEnd içinde bunu boş olarak sıfırlayın. DragOverlay içinde activeDragId kullanarak doğru öğeyi bulun ve oluşturun.
Sürüklenebilir ve Bırakılabilir Öğeleri Birleştirme
Gerçek bir sürükle ve bırak arayüzü, DndContext'i, birden çok useDraggable öğesini, birden çok useDroppable bölgesini ve her öğenin nerede olduğunu takip edecek durum yönetimini bir araya getirir. Temel fikir şudur: dnd-kit mekanikleri sağlar; yeni düzeni yansıtmak için durumu onDragEnd içinde güncellemek ve arayüzü yeniden oluşturmak sizin görevinizdir.
Dönüşüm Stilini Uygulama
useDraggable'dan alınan transform nesnesini CSS dönüşüm dizesine dönüştüren yardımcı işlev hangisidir?
Ders Özeti: Temel Kancalar
DndContext, tüm dnd-kit sürükleme işlemlerinin koordinasyon merkezidir. useDraggable, sürüklenebilir öğeler için öznitelikler, dinleyiciler, setNodeRef ve dönüşüm sağlar. useDroppable, bırakma hedefleri için isOver ve setNodeRef sağlar. onDragEnd size event.active.id ve event.over?.id değerlerini vererek durumu güncellemenizi sağlar. DragOverlay, portal tabanlı yüzen bir önizleme oluşturur.
Sıkça Sorulan Sorular
“DndContext, useDraggable ve useDroppable” dersi ücretsiz mi?
Evet — “DndContext, useDraggable ve useDroppable” 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.
“DndContext, useDraggable ve useDroppable” dersinde ne öğreneceğim?
DndContext sağlayıcısını bağlayıp ilgili kancaları kullanarak sürüklenebilir ve bırakılabilir ögeler oluşturun 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 2. dersidir.
“DndContext, useDraggable ve useDroppable” 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
- dnd-kit Mimarisi ve Erişilebilirlik Öncelikli Tasarım
- DndContext, useDraggable ve useDroppable
- Yeniden Sıralanabilir Listeler için SortableContext
- Özel Sürükleme Katmanları ve Çok Kapsayıcılı DnD