0Pricing
React Academy · Ders

Sürükleyip Bırakarak Dosya Yükleme Arayüzü

onDragOver/onDrop olayları ve görsel geri bildirimle sürükleyip bırakma alanı oluşturun.

Sürükleyip Bırakarak Dosya Yükleme Arayüzü, 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.

Hoş Geldiniz

Bu derste, kullanıcıları yönlendirmek için yerel sürükleme olaylarını ve görsel geri bildirimi kullanarak React'te sürükleyip bırakma özellikli bir dosya yükleme alanı oluşturacaksınız.

Sürükleme Olaylarına Genel Bakış

Tarayıcı, dosyalar öğelerin üzerine sürüklendiğinde sürükleme olaylarını tetikler. Temel olaylar şunlardır: `dragover` (dosya öğenin üzerindedir), `dragleave` (dosya öğeden ayrılır) ve `drop` (dosya bırakılır).

Varsayılan Davranışı Önleme

Varsayılan olarak, tarayıcıya bir dosya bırakmak dosyaya yönlendirme yapar. Bunu önlemek için hem `onDragOver` hem de `onDrop` içinde `e.preventDefault()` çağrısını yapın.
const handleDragOver = (e) => {
  e.preventDefault();
};
const handleDrop = (e) => {
  e.preventDefault();
  const files = Array.from(e.dataTransfer.files);
  // process files
};

Görsel Etkin Durum

Bir dosyanın alanın üzerine sürüklenip sürüklenmediğini doğru/yanlış türünde bir durumla izleyin. Kullanıcılara görsel geri bildirim vermek için bir CSS sınıfını değiştirin (örneğin vurgulanmış bir kenarlık).
const [isDragging, setIsDragging] = useState(false);

<div
  className={isDragging ? 'zone active' : 'zone'}
  onDragOver={(e) => { e.preventDefault(); setIsDragging(true); }}
  onDragLeave={() => setIsDragging(false)}
  onDrop={handleDrop}
>

Bırakılan Dosyaları Okuma

Bırakılan dosyalar `e.dataTransfer.files` içinde bir FileList olarak bulunur. Bunu bir diziye dönüştürüp dosyaları işleyin.
const handleDrop = (e) => {
  e.preventDefault();
  setIsDragging(false);
  const files = Array.from(e.dataTransfer.files);
  setSelectedFiles(files);
};

Tıklayarak Göz Atmayı Birleştirme

Gizli bir dosya girdisi oluşturarak bırakma alanını tıklanabilir hâle getirin ve alan tıklandığında bu girdiyi programlı olarak tıklatın.
const inputRef = useRef();

<div onClick={() => inputRef.current.click()} ...>
  Drop files here or click to browse
</div>
<input
  ref={inputRef}
  type="file"
  multiple
  hidden
  onChange={(e) => setSelectedFiles(Array.from(e.target.files))}
/>

Dosya Önizlemelerini Gösterme

Adlarını ve boyutlarını göstermek için seçili dosyalar üzerinde dolaşın. Görsel dosyalar için URL.createObjectURL ile önizleme URL'leri oluşturun ve bunları bir temizleme etkisinde iptal edin.

Yüklemeden Önce Dosyaları Kaldırma

Seçili dosyalar dizisini filtreleyerek kullanıcıların yüklemeden önce dosyaları kaldırmasına izin verin. Durumu filtrelenmiş diziyle güncelleyin.
const removeFile = (index) =>
  setSelectedFiles(files => files.filter((_, i) => i !== index));

dragenter ve dragover Karşılaştırması

Sürükleme ilk kez alana girdiğinde bunu algılamak için `dragenter` kullanın; üzerine gelme sırasında etkin durumu korumak için `dragover` kullanın. İç içe alt öğeler için bir sayaç kullanın: `dragenter` sırasında artırın, `dragleave` sırasında azaltın ve `drop` sırasında sıfırlayın.

Üçüncü Taraf Kitaplıkları

Üretim ortamındaki bırakma alanları için **react-dropzone** kullanmayı değerlendirin. Bu kitaplık tarayıcı farklılıklarını, ARIA özniteliklerini, dosya türü filtrelemeyi ve birden çok yükleme kipini kullanıma hazır olarak yönetir.
import { useDropzone } from 'react-dropzone';
const { getRootProps, getInputProps, isDragActive } = useDropzone({
  onDrop: acceptedFiles => setFiles(acceptedFiles),
  accept: { 'image/*': [] },
});

Hızlı Kontrol

onDragOver işleyicisinde e.preventDefault() çağrısını neden yapmalısınız?

Özet

onDragOver, onDragLeave ve onDrop olaylarıyla bir bırakma alanı oluşturun. Sürükleme ve bırakma sırasında her zaman e.preventDefault() çağrısını yapın. Görsel geri bildirim için isDragging durumunu izleyin. Bunu, tıklayarak göz atmayı sağlayan gizli bir dosya girdisiyle birleştirin.

Sırada

Sıradaki ders: **Dosyaları Arka Uç API'sine Yükleme** — dosyaları POST etmek ve yükleme ilerlemesini izlemek için FormData ve fetch kullanacaksınız.

Sıkça Sorulan Sorular

“Sürükleyip Bırakarak Dosya Yükleme Arayüzü” dersi ücretsiz mi?

Evet — “Sürükleyip Bırakarak Dosya Yükleme Arayüzü” 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.

“Sürükleyip Bırakarak Dosya Yükleme Arayüzü” dersinde ne öğreneceğim?

onDragOver/onDrop olayları ve görsel geri bildirimle sürükleyip bırakma alanı 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 3. dersidir.

“Sürükleyip Bırakarak Dosya Yükleme Arayüzü” 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. useRef ile Denetimsiz Girdiler
  2. Dosya Girdisi ve Dosya Verilerini Okuma
  3. Sürükleyip Bırakarak Dosya Yükleme Arayüzü
  4. Dosyaları Backend API'sine Yükleme
← React Academy Sayfasına Dön