React Academy · Ders

Özel Sürükleme Katmanları ve Çok Kapsayıcılı DnD

DragOverlay ile özel sürükleme önizlemeleri görüntüleyip kanban tarzı kapsayıcılar arası sürükleme etkileşimlerini uygulayın

4. ders / 413 adım

Özel Sürükleme Katmanları ve Çok Kapsayıcılı DnD, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 4. 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.

Portal olarak DragOverlay

DragOverlay, içeriğini React portalı olarak oluşturur ve DndContext DOM ağacının içine değil, doğrudan document.body'ye ekler. Bu nedenle taşmanın gizlendiği veya kaydırıldığı kapsayıcılar tarafından hiçbir zaman kırpılmaz ve elle katman sırası yönetimi gerektirmeden her zaman diğer tüm öğelerin üzerinde görünür.

Kaplamanın Görsel Bağımsızlığı

DragOverlay özgün öğeden ayrı olduğu için, özgün öğeye uygulandığında düzeni bozabilecek görsel stillere sahip olabilir. Gölge, ölçek dönüşümü (onu özgün öğeden biraz daha büyük yapma) veya döndürme efekti ekleyebilirsiniz. Bu görsel ipuçları, kullanıcıya öğenin "havaya kaldırıldığını" ve hareket hâlinde olduğunu anlatır.

activeDragId Takibi

DragOverlay ne oluşturacağını bilmelidir. Etkin sürükleme ID'sini durum içinde takip edin: onDragStart ile event.active.id kullanarak ayarlayın ve onDragEnd ile boş olarak temizleyin. DragOverlay içinde bu ID'yi kullanarak karşılık gelen öğe verilerini bulun ve doğru önizleme bileşenini oluşturun.

Özgün Konumda Yer Tutucu

DragOverlay kullanırken özgün sürüklenebilir öğe, sürükleme sırasında görsel bir yer tutucuya dönüşmelidir. useSortable kullanıyorsanız, isDragging doğru olduğunda opaklık: 0 veya kesikli bir kenarlık uygulayın. Bu, öğe sürükleme iptal edilirse geri döneceği "alanı" ve yeni bir konuma taşınırken geride bıraktığı boşluğu gösterir.

Çok Kapsayıcılı Sürükle ve Bırak Kurulumu

Çok kapsayıcılı sürükle ve bırak, öğelerin iki veya daha fazla ayrı liste arasında sürüklenebilmesi anlamına gelir. Kurulum, tüm kapsayıcıları saran tek bir DndContext ve her kapsayıcının kendi SortableContext'ine sahip olmasını gerektirir. Çakışmaları önlemek için tüm kapsayıcılardaki öğe ID'leri genel olarak benzersiz olmalıdır.

Kapsayıcılar Arası Taşıma için onDragOver Kullanımı

Akıcı kapsayıcılar arası animasyon için durumu onDragEnd'i beklemek yerine onDragOver içinde güncelleyin. Sürüklenen öğe yeni bir kapsayıcıya geçtiğinde, onu kaynak kapsayıcıdan hemen hedef kapsayıcıya taşıyın. Bu, öğenin nereye bırakılacağı konusunda gerçek zamanlı görsel geri bildirim sağlar.

Tüm Kapsayıcılarda Benzersiz ID'ler

Birden çok SortableContext örneği arasında sürükleme yaparken tüm öğe ID'leri, yalnızca her listede değil, DndContext'in tamamında benzersiz olmalıdır. İki kapsayıcı aynı ID'yi paylaşırsa dnd-kit hangi öğenin etkin olduğunu belirleyemez. Genel benzersizliği sağlamak için UUID'ler kullanın veya ID'lerin önüne kapsayıcı adını ekleyin.

Özel Meta Veriler için active.data.current

useDraggable ve useSortable bir data seçeneğini kabul eder: useSortable({ id, data: { containerId, type } }). Bu verilere sürükleme olaylarının geri çağırma işlevlerinde event.active.data.current olarak erişilebilir. Çok kapsayıcılı senaryolarda kaynak kapsayıcı ID'sini veri içinde saklayabilir ve öğenin nereden geldiğini bilmek için onDragOver içinde kullanabilirsiniz.

Sürükleme Sırasında Kapsayıcıların Durumunu Güncelleme

Çok kapsayıcılı durum genellikle kapsayıcı ID'sine göre anahtarlanmış ve her biri bir öğe dizisi içeren bir nesne kullanır. onDragOver içinde, etkin öğe üzerinde bulunulan hedeften farklı bir kapsayıcıdaysa öğeyi kaynak kapsayıcı dizisinden kaldırın ve doğru konumda hedef kapsayıcı dizisine ekleyin.

Erişilebilir Çok Kapsayıcılı Gezinme

KeyboardSensor, çok kapsayıcılı sürükle ve bırak işlemleri için çalışır. Kullanıcılar, bir kapsayıcı içindeki öğeler arasında hareket etmek için ok tuşlarına basar; bir kapsayıcının kenarına ulaştıklarında bitişik kapsayıcılara geçmeye devam edebilirler. SortableContext collisionDetection algoritması, konuma göre en yakın geçerli bırakma hedefini belirler.

Çakışma Algılama Algoritmaları

DndContext, sürüklenen öğenin hangi bırakılabilir öğenin üzerinde olduğunu nasıl hesaplayacağını belirleyen bir collisionDetection özelliğini kabul eder. Varsayılan closestCenter, çoğu liste için iyi çalışır. closestCorners, ızgaralar için daha uygundur. pointerWithin, yalnızca imleç fiziksel olarak bırakılabilir öğenin içindeyken onu etkinleştirir.

DragOverlay Portal Davranışı

DragOverlay içeriğini DOM'da nereye oluşturur?

Ders Özeti: Kaplamalar ve Çok Kapsayıcılı Yapı

DragOverlay, document.body'ye portal olarak oluşturulur ve düzen kısıtlamalarından görsel bağımsızlık sağlar. Doğru kaplama içeriğini oluşturmak için activeDragId'yi onDragStart/onDragEnd içinde takip edin. Çok kapsayıcılı sürükle ve bırak, tek bir DndContext içindeki birden çok SortableContext örneğini ve genel olarak benzersiz ID'leri kullanır. Akıcı kapsayıcılar arası animasyonlar için durumu onDragOver içinde güncelleyin ve kaynak kapsayıcı meta verileri için event.active.data.current değerini kullanın.

Başlamak ücretsiz

Yapay zeka eğitmeniyle React öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
88
Dersler
324

Sıkça Sorulan Sorular

“Özel Sürükleme Katmanları ve Çok Kapsayıcılı DnD” dersi ücretsiz mi?

Evet — “Özel Sürükleme Katmanları ve Çok Kapsayıcılı DnD” 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.

“Özel Sürükleme Katmanları ve Çok Kapsayıcılı DnD” dersinde ne öğreneceğim?

DragOverlay ile özel sürükleme önizlemeleri görüntüleyip kanban tarzı kapsayıcılar arası sürükleme etkileşimlerini uygulayı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 4. dersidir.

“Özel Sürükleme Katmanları ve Çok Kapsayıcılı DnD” 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. dnd-kit Mimarisi ve Erişilebilirlik Öncelikli Tasarım
  2. DndContext, useDraggable ve useDroppable
  3. Yeniden Sıralanabilir Listeler için SortableContext
  4. Özel Sürükleme Katmanları ve Çok Kapsayıcılı DnD
← React Academy Sayfasına Dön