Kopier til utklippstavle i React: Guide med API og NPM-pakker

Å kopiere informasjon manuelt, som kodeutdrag, nettadresser eller tekstbiter, kan være både tidkrevende og feilutsatt. Dette gjelder særlig på mobile enheter der skjermen er liten. Ved å implementere en «kopier til utklippstavle»-funksjon, sparer man ikke bare verdifull tid, men reduserer også risikoen for feil og skrivefeil.

Konfigurere «Kopier til utklippstavle»-funksjonalitet

I en React-applikasjon kan du lage en ny komponent som du kaller `CopyButton`. Denne komponenten tar imot tekst som skal kopieres til utklippstavlen.

Hvis du ikke allerede har et React-prosjekt, kan du bruke `create-react-app` verktøyet til å opprette et.

 function CopyButton({text}) {
    const copyToClipboard = () => {
        
    }
  return (
    <button onClick={copyToClipboard}>Kopier</button>
  )
}

export default CopyButton

Når brukeren trykker på knappen, skal funksjonen `copyToClipboard` kalles for å kopiere teksten til utklippstavlen.

For å implementere kopieringsfunksjonaliteten kan du enten bruke utklippstavlens API direkte eller benytte deg av en NPM-pakke.

Denne veiledningen viser hvordan du kan bruke begge metodene.

Bruke utklippstavle-API for å kopiere tekst i React

Utklippstavle APIet gir en mulighet for å samhandle med utklippstavlekommandoer som kopier, klipp ut og lim inn.

For å få tilgang til APIet, må du bruke `navigator.clipboard`-objektet som finnes i de fleste moderne nettlesere. Dette objektet har forskjellige metoder for å skrive til eller lese fra utklippstavlen.

For å skrive til utklippstavlen, bruker du `writeText`-metoden.

La oss se hvordan dette kan implementeres i `copyToClipboard`-funksjonen i `CopyButton`-komponenten.

 const copyToClipboard = async (text) => {
    try {
      await navigator.clipboard.writeText(text);
      alert('Teksten er kopiert til utklippstavlen:', text);
    } catch (error) {
      alert('Feil ved kopiering til utklippstavlen:', error);
    }
  };

`writeText`-metoden tar teksten som skal kopieres til utklippstavlen som parameter. Denne metoden er asynkron, så du må bruke `await` før du fortsetter.

Hvis teksten blir kopiert til utklippstavlen, skal en suksessmelding vises, ellers skal en feilmelding vises i et varsel.

Sjekke nettlesertillatelser

Som en god praksis er det viktig å kontrollere at brukeren har gitt nettleseren tillatelse til å få tilgang til utklippstavlen. Du kan sjekke om brukeren har gitt tillatelse for skriving til utklippstavlen ved å bruke `navigator.permissions` Web API før du kopierer til utklippstavlen, som vist nedenfor.

 const copyToClipboard = async () => {
    try {
        const permissions = await navigator.permissions.query({name: "clipboard-write"})
        if (permissions.state === "granted" || permissions.state === "prompt") {
            await navigator.clipboard.writeText(text);
            alert('Teksten er kopiert til utklippstavlen!');
        } else {
            throw new Error("Får ikke tilgang til utklippstavlen. Sjekk nettleserinnstillingene.")
        }
    } catch (error) {
        alert('Feil ved kopiering til utklippstavlen:', error);
    }
};

I den modifiserte funksjonen ovenfor vil teksten kun bli skrevet til utklippstavlen hvis brukeren har gitt tillatelse til dette. Hvis ikke, genereres det en feil.

Bruke en NPM-pakke for å kopiere til utklippstavlen i React

Hvis du ikke ønsker å bruke utklippstavle-API direkte, finnes det flere NPM-pakker du kan bruke. For React-applikasjoner kan du bruke pakken react-copy-to-clipboard. Denne pakken er populær med over 1 million ukentlige nedlastinger og er enkel å bruke.

Installer pakken i React-applikasjonen din ved å kjøre følgende kommando i terminalen:

 npm install react-copy-to-clipboard

Etter installasjon, importerer du `CopyToClipboard`-komponenten fra `react-copy-to-clipboard` i `CopyButton`-komponenten.

 import {CopyToClipboard} from 'react-copy-to-clipboard';

`CopyToClipboard`-komponenten tar teksten du vil kopiere som en egenskap. Den aksepterer også en underordnet komponent som utløser kopieringshandlingen når den klikkes.

For eksempel, bruk koden nedenfor for å kopiere til utklippstavlen med en knapp:

 <CopyToClipboard text={text} onCopy={(text, result) => console.log(result)}>
    <button>Kopier</button>
</CopyToClipboard>

Merk deg behandlingsfunksjonen `onCopy`. Denne funksjonen tar to argumenter: `text`, som er teksten som er kopiert, og `result`, som er en boolsk verdi som indikerer om kopieringen var vellykket eller ikke.

Hvorfor bruke en «kopier til utklippstavle»-funksjon?

Du har nå lært hvordan du kan bruke utklippstavle-APIet og `react-copy-to-clipboard`-pakken for å kopiere tekst til utklippstavlen i en React-applikasjon. Selv om brukere av applikasjonen din kan velge tekst manuelt og bruke nettleserens innebygde kopieringsfunksjon, er det mye enklere å bare trykke på en knapp for å kopiere tekst, noe som gir en bedre brukeropplevelse.