React Academy · Les

Clipboard API: kopiëren en plakken in React

Implementeer knoppen voor kopiëren naar het klembord met de moderne Clipboard API en bied een nette fallback voor oudere browsers

Les 1 van 413 stappen

Clipboard API: kopiëren en plakken in React is een gratis React Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject React Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus React Academy bevat in totaal 4 lessen.

Naar het klembord schrijven

navigator.clipboard.writeText(text) schrijft een tekenreeks naar het systeemklembord en geeft een Promise terug. Dit is de moderne vervanging voor de verouderde aanpak met execCommand. Wacht altijd met await op de Promise en handel een mogelijke afwijzing af, bijvoorbeeld wanneer de gebruiker toegang tot het klembord weigert.

Van het klembord lezen

navigator.clipboard.readText() leest de huidige inhoud van het klembord als tekenreeks en geeft ook een Promise terug. Voor lezen is de toestemming clipboard-read vereist; de browser vraagt de gebruiker deze te verlenen. In de praktijk wordt lezen van het klembord in typische React-applicaties minder vaak gebruikt dan schrijven.

Schrijven naar het klembord vereist een gebruikersactie

Browsers staan toe dat clipboard.writeText alleen binnen een handler voor een gebruikersactie wordt aangeroepen, zoals bij een click- of keydown-gebeurtenis. Als je de functie in een useEffect aanroept of na de actie asynchroon uitvoert, ontstaat er een beveiligingsfout. Start het schrijven altijd rechtstreeks vanuit een onClick-handler.

Interfacepatroon voor kopiëren naar het klembord

Het standaardpatroon is: de gebruiker klikt op een kopieerknop, je handler roept navigator.clipboard.writeText(value) aan, bij succes stel je de status copied in op true en toont de knop tijdelijk een vinkje of het label "Gekopieerd!". Na een korte vertraging keert de knop terug naar de normale toestand.

De useCopyToClipboard-hook bouwen

Breng de logica onder in een useCopyToClipboard-hook die een tupel teruggeeft: [copied, copyFn]. De booleaanse waarde copied stuurt de feedback in de gebruikersinterface aan en copyFn accepteert de te kopiëren tekst. De hook handelt het asynchrone schrijven en eventuele fouten intern af, zodat componenten eenvoudig blijven.

De status copied resetten

Stel in de hook na een geslaagde kopieeractie setCopied(true) in en plan een reset met setTimeout(() => setCopied(false), 2000). Bewaar de time-out-id en wis die in een opruimfunctie van useEffect om statusupdates na het ontkoppelen te voorkomen. Zo vermijd je de waarschuwing "kan de status van een ontkoppelde component niet bijwerken".

Verouderde terugvaloptie met execCommand

Oudere browsers en pagina's zonder HTTPS ondersteunen de Clipboard API niet. De verouderde terugvaloptie maakt een tijdelijk textarea, stelt de waarde ervan in, voegt het toe aan de body, roept document.execCommand('copy') aan en verwijdert het element. Deze aanpak is synchroon en werkt overal, maar is verouderd.

Beschikbaarheid van de Clipboard API vaststellen

Controleer dit voordat je de Clipboard API gebruikt: navigator.clipboard && typeof navigator.clipboard.writeText === 'function'. Als de API niet beschikbaar is, val je terug op de verouderde aanpak met execCommand. Deze defensieve controle voorkomt fouten tijdens de uitvoering in omgevingen waarin de API niet wordt ondersteund.

Toestemming voor lezen van het klembord

Voor het lezen van het klembord is toestemming via de Permissions API vereist. Je kunt de huidige status opvragen: navigator.permissions.query({ name: 'clipboard-read' }) geeft een PermissionStatus terug met een state van granted, denied of prompt. De browser vraagt automatisch om toestemming wanneer je readText() aanroept.

Vereiste voor HTTPS

De Clipboard API is alleen beschikbaar in beveiligde contexten (HTTPS of localhost). Op HTTP-pagina's is navigator.clipboard undefined. Dit is een beveiligingsbeperking, omdat klembordinhoud gevoelig kan zijn. Controleer altijd of de API beschikbaar is voordat je naar de methoden ervan verwijst, om nullverwijzingsfouten te voorkomen.

Klembord testen in jsdom

jsdom (gebruikt door Jest) implementeert de Clipboard API niet. Simuleer deze in je testconfiguratie: Object.assign(navigator, { clipboard: { writeText: jest.fn().mockResolvedValue(undefined) } }). Zo kun je testen of je component writeText aanroept met het juiste argument, zonder een echte browseromgeving.

Vereisten voor schrijven naar het klembord

Wanneer kun je navigator.clipboard.writeText() veilig in de browser aanroepen?

Samenvatting van de les: Clipboard API in React

Gebruik navigator.clipboard.writeText() in een klikhandler om tekst te kopiëren. Bouw een useCopyToClipboard-hook die [copied, copyFn] retourneert en zichzelf na een bepaalde tijd reset. Controleer altijd of de API beschikbaar is, bied een execCommand-terugvaloptie voor oudere browsers en simuleer navigator.clipboard in Jest-tests.

Gratis beginnen

Leer React met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
88
Lessen
324

Veelgestelde vragen

Is de les “Clipboard API: kopiëren en plakken in React” gratis?

Ja — de volledige tekst van “Clipboard API: kopiëren en plakken in React” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus React Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus React Academy bevat in totaal 4 lessen.

Wat leer ik in “Clipboard API: kopiëren en plakken in React”?

Implementeer knoppen voor kopiëren naar het klembord met de moderne Clipboard API en bied een nette fallback voor oudere browsers Je oefent met React Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met React Academy te beginnen?

Ervaring vooraf is niet nodig. React Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Clipboard API: kopiëren en plakken in React”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over React Academy?

Ja. Elke les over React Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Clipboard API: kopiëren en plakken in React
  2. Geolocation API in React-componenten
  3. Notifications API en machtigingen afhandelen
  4. IntersectionObserver voor scrollgestuurde effecten
← Terug naar React Academy