0Pricing
React Academy · Lektion

Clipboard API: Kopieren und Einfügen in React

Kopieren-in-die-Zwischenablage-Schaltflächen mit der modernen Clipboard API implementieren und für ältere Browser elegant ausweichen

Clipboard API: Kopieren und Einfügen in React ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

In die Zwischenablage schreiben

navigator.clipboard.writeText(text) schreibt eine Zeichenkette in die Systemzwischenablage und gibt ein Promise zurück. Die Methode ist der moderne Ersatz für den früheren Ansatz mit execCommand. Warten Sie immer mit await auf das Promise und behandeln Sie eine mögliche Ablehnung, etwa wenn der Benutzer den Zugriff auf die Zwischenablage verweigert.

Aus der Zwischenablage lesen

navigator.clipboard.readText() liest den aktuellen Inhalt der Zwischenablage als Zeichenkette und gibt ebenfalls ein Promise zurück. Zum Lesen ist die Berechtigung clipboard-read erforderlich, deren Erteilung der Browser beim Benutzer anfragt. In der Praxis wird das Lesen der Zwischenablage in typischen React-Anwendungen seltener verwendet als das Schreiben.

Das Schreiben in die Zwischenablage erfordert eine Benutzeraktion

Browser erzwingen, dass clipboard.writeText nur innerhalb eines Handlers für eine Benutzeraktion aufgerufen werden kann, etwa bei einem Click- oder Keydown-Event. Wenn Sie die Methode innerhalb eines useEffect oder asynchron nach der Benutzeraktion aufrufen, wird ein Sicherheitsfehler ausgelöst. Lösen Sie den Schreibvorgang immer direkt aus einem onClick-Handler aus.

UI-Muster zum Kopieren in die Zwischenablage

Das Standardmuster ist: Der Benutzer klickt auf eine Kopieren-Schaltfläche, Ihr Handler ruft navigator.clipboard.writeText(value) auf, bei Erfolg setzen Sie den copied-State auf true, und die Schaltfläche zeigt vorübergehend ein Häkchen oder die Beschriftung „Kopiert!“ an. Nach kurzer Zeit kehrt die Schaltfläche zu ihrem normalen Zustand zurück.

Den useCopyToClipboard-Hook erstellen

Kapseln Sie die Logik in einem useCopyToClipboard-Hook, der ein Tupel zurückgibt: [copied, copyFn]. Der boolesche Wert copied steuert die UI-Rückmeldung, und copyFn übernimmt den zu kopierenden Text. Der Hook kümmert sich intern um das asynchrone Schreiben und mögliche Fehler, sodass die Komponenten einfach bleiben.

Den Copied-State zurücksetzen

Setzen Sie im Hook nach einem erfolgreichen Kopiervorgang setCopied(true) und planen Sie mit setTimeout(() => setCopied(false), 2000) das Zurücksetzen. Speichern Sie die Timeout-ID und löschen Sie sie in der Bereinigung eines useEffect, um State-Aktualisierungen nach dem Unmounting zu verhindern. Dadurch vermeiden Sie die Warnung „cannot update state on an unmounted component“.

Legacy-Fallback mit execCommand

Ältere Browser und Seiten ohne HTTPS unterstützen die Clipboard API nicht. Der Legacy-Fallback erstellt ein vorübergehendes textarea, setzt dessen Wert, hängt es an den Body an, ruft document.execCommand('copy') auf und entfernt das Element wieder. Dieser Ansatz ist synchron und funktioniert überall, ist jedoch veraltet.

Verfügbarkeit der Clipboard API erkennen

Prüfen Sie vor der Verwendung der Clipboard API: navigator.clipboard && typeof navigator.clipboard.writeText === 'function'. Wenn sie nicht verfügbar ist, verwenden Sie als Fallback den älteren Ansatz mit execCommand. Diese defensive Prüfung verhindert Laufzeitfehler in Umgebungen, die die API nicht unterstützen.

Berechtigung zum Lesen der Zwischenablage

Zum Lesen der Zwischenablage ist eine Benutzerberechtigung über die Permissions API erforderlich. Sie können den aktuellen Status abfragen: navigator.permissions.query({ name: 'clipboard-read' }) gibt einen PermissionStatus mit einem state von granted, denied oder prompt zurück. Der Browser fragt die Berechtigung automatisch an, wenn Sie readText() aufrufen.

HTTPS-Anforderung

Die Clipboard API ist nur in sicheren Kontexten verfügbar, also unter HTTPS oder auf localhost. Auf HTTP-Seiten ist navigator.clipboard undefined. Diese Einschränkung dient der Sicherheit, da der Inhalt der Zwischenablage vertraulich sein kann. Prüfen Sie stets die Verfügbarkeit der API, bevor Sie auf ihre Methoden zugreifen, um Nullreferenzfehler zu vermeiden.

Clipboard in jsdom testen

jsdom (wird von Jest verwendet) implementiert die Clipboard API nicht. Mocken Sie sie in Ihrem Test-Setup: Object.assign(navigator, { clipboard: { writeText: jest.fn().mockResolvedValue(undefined) } }). So können Sie testen, dass Ihre Komponente writeText mit dem korrekten Argument aufruft, ohne eine echte Browserumgebung zu benötigen.

Anforderungen an das Schreiben in die Zwischenablage

Wann kann navigator.clipboard.writeText() im Browser sicher aufgerufen werden?

Lektionszusammenfassung: Clipboard API in React

Verwenden Sie navigator.clipboard.writeText() in einem Click-Handler, um Text zu kopieren. Erstellen Sie einen useCopyToClipboard-Hook, der [copied, copyFn] mit einer zeitgesteuerten Zurücksetzung zurückgibt. Prüfen Sie immer, ob die API verfügbar ist, stellen Sie für ältere Browser ein execCommand-Fallback bereit und mocken Sie navigator.clipboard in Jest-Tests.

Häufig gestellte Fragen

Ist die Lektion „Clipboard API: Kopieren und Einfügen in React“ kostenlos?

Ja — der vollständige Text von „Clipboard API: Kopieren und Einfügen in React“ 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 „Clipboard API: Kopieren und Einfügen in React“?

Kopieren-in-die-Zwischenablage-Schaltflächen mit der modernen Clipboard API implementieren und für ältere Browser elegant ausweichen 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 1 von 4.

Wie lange dauert die Lektion „Clipboard API: Kopieren und Einfügen in React“?

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. Clipboard API: Kopieren und Einfügen in React
  2. Geolocation API in React-Komponenten
  3. Notifications API und Berechtigungen
  4. IntersectionObserver für scrollgesteuerte Effekte
← Zurück zu React Academy