0Pricing
React Academy · Lektion

Benutzeroberfläche für Drag-and-drop-Datei-Uploads

Erstellen Sie eine Drag-and-drop-Zone mit onDragOver-/onDrop-Ereignissen und visueller Rückmeldung.

Benutzeroberfläche für Drag-and-drop-Datei-Uploads ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Willkommen

In dieser Lektion erstellen Sie in React einen Drag-and-drop-Bereich zum Hochladen von Dateien. Dabei verwenden Sie native Drag-Ereignisse und visuelles Feedback, um Benutzer anzuleiten.

Überblick über Drag-Ereignisse

Der Browser löst Drag-Ereignisse aus, wenn Dateien über Elemente gezogen werden. Die wichtigsten Ereignisse sind: `dragover` (die Datei befindet sich über dem Element), `dragleave` (die Datei verlässt das Element) und `drop` (die Datei wird losgelassen).

Standardverhalten verhindern

Standardmäßig navigiert der Browser zu einer Datei, wenn Sie sie darin ablegen. Rufen Sie sowohl in `onDragOver` als auch in `onDrop` `e.preventDefault()` auf, um dies zu verhindern.
const handleDragOver = (e) => {
  e.preventDefault();
};
const handleDrop = (e) => {
  e.preventDefault();
  const files = Array.from(e.dataTransfer.files);
  // process files
};

Visueller aktiver Status

Verfolgen Sie mit einem booleschen Status, ob eine Datei über der Dropzone gezogen wird. Schalten Sie eine CSS-Klasse um, um Benutzern visuelles Feedback zu geben, zum Beispiel einen hervorgehobenen Rand.
const [isDragging, setIsDragging] = useState(false);

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

Abgelegte Dateien auslesen

Abgelegte Dateien befinden sich in `e.dataTransfer.files` — einer FileList. Wandeln Sie sie in ein Array um und verarbeiten Sie die Dateien.
const handleDrop = (e) => {
  e.preventDefault();
  setIsDragging(false);
  const files = Array.from(e.dataTransfer.files);
  setSelectedFiles(files);
};

Klicken zum Durchsuchen hinzufügen

Machen Sie die Dropzone zusätzlich anklickbar, indem Sie ein ausgeblendetes Datei-Input rendern und es programmgesteuert anklicken, wenn die Zone angeklickt wird.
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))}
/>

Dateivorschauen anzeigen

Durchlaufen Sie die ausgewählten Dateien, um ihre Namen und Größen anzuzeigen. Erzeugen Sie für Bilddateien mit URL.createObjectURL Vorschau-URLs und geben Sie sie in einem Cleanup-Effekt wieder frei.

Dateien vor dem Hochladen entfernen

Ermöglichen Sie es Benutzern, Dateien vor dem Hochladen zu entfernen, indem Sie das Array der ausgewählten Dateien filtern. Aktualisieren Sie den Status mit dem gefilterten Array.
const removeFile = (index) =>
  setSelectedFiles(files => files.filter((_, i) => i !== index));

dragenter vs dragover

Verwenden Sie `dragenter`, um zu erkennen, wann das Ziehen erstmals in die Zone eintritt, und `dragover`, um den aktiven Status während des Darüberziehens aufrechtzuerhalten. Verwenden Sie für verschachtelte untergeordnete Elemente einen Zähler: Erhöhen Sie ihn bei `dragenter`, verringern Sie ihn bei `dragleave` und setzen Sie ihn bei `drop` zurück.

Bibliotheken von Drittanbietern

Für Dropzones in Produktionsanwendungen können Sie **react-dropzone** in Betracht ziehen. Die Bibliothek kümmert sich standardmäßig um Browserbesonderheiten, ARIA-Attribute, die Filterung von Dateitypen und mehrere Upload-Modi.
import { useDropzone } from 'react-dropzone';
const { getRootProps, getInputProps, isDragActive } = useDropzone({
  onDrop: acceptedFiles => setFiles(acceptedFiles),
  accept: { 'image/*': [] },
});

Kurze Überprüfung

Warum müssen Sie im Handler onDragOver e.preventDefault() aufrufen?

Zusammenfassung

Erstellen Sie eine Dropzone mit den Ereignissen onDragOver, onDragLeave und onDrop. Rufen Sie bei dragover und drop immer e.preventDefault() auf. Verfolgen Sie den isDragging-Status für visuelles Feedback. Kombinieren Sie die Dropzone mit einem ausgeblendeten Datei-Input, um das Durchsuchen per Klick zu ermöglichen.

Als Nächstes

Nächste Lektion: **Dateien an eine Backend-API hochladen** — Sie verwenden FormData und fetch, um Dateien per POST zu übertragen und den Upload-Fortschritt zu verfolgen.

Häufig gestellte Fragen

Ist die Lektion „Benutzeroberfläche für Drag-and-drop-Datei-Uploads“ kostenlos?

Ja — der vollständige Text von „Benutzeroberfläche für Drag-and-drop-Datei-Uploads“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Benutzeroberfläche für Drag-and-drop-Datei-Uploads“?

Erstellen Sie eine Drag-and-drop-Zone mit onDragOver-/onDrop-Ereignissen und visueller Rückmeldung. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Benutzeroberfläche für Drag-and-drop-Datei-Uploads“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Unkontrollierte Eingaben mit useRef
  2. Dateieingabe und Dateidaten auslesen
  3. Benutzeroberfläche für Drag-and-drop-Datei-Uploads
  4. Dateien an eine Backend-API hochladen
← Zurück zu React Academy