Како додати функцију Цопи то Цлипбоард у вашу Реацт апликацију

Ručno prenošenje podataka, kao što su isečci koda, URL adrese ili delovi teksta, može biti naporno i sklono greškama, naročito na mobilnim uređajima sa manjim ekranima. Dodavanje opcije „kopiraj u međuspremnik“ ne samo da štedi vreme, već i smanjuje šansu za greške i pogrešno kucanje.

Konfigurisanje funkcije kopiranja u međuspremnik

U React aplikaciji, napravite novu komponentu pod nazivom CopyButton. Ova komponenta prima tekst koji treba da se kopira u međuspremnik.

Ukoliko nemate React projekat na kojem biste radili, iskoristite alat za kreiranje React aplikacije da biste ga podesili.

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

Kada se klikne, dugme treba da pozove funkciju nazvanu copyToClipboard koja prebacuje tekst u međuspremnik.

Za implementaciju funkcije kopiranja, možete direktno koristiti Clipboard API ili iskoristiti NPM paket.

Ovaj vodič će vam pokazati kako da upotrebite oba načina.

Upotreba Clipboard API-ja za prenos teksta u međuspremnik u React-u

Clipboard API nudi način za interakciju sa operacijama međuspremnika kao što su kopiranje, sečenje i lepljenje.

Da biste mu pristupili, treba da upotrebite objekat navigator.clipboard koji je dostupan u većini savremenih pregledača. On sadrži razne metode koje omogućavaju pisanje ili čitanje sadržaja međuspremnika.

Da biste upisali u međuspremnik, upotrebite metod writeText.

Pogledajmo kako se to implementira u funkciji copyToClipboard komponente CopyButton.

 const copyToClipboard = async (text) => {
    try {
      await navigator.clipboard.writeText(text);
      alert('Tekst je kopiran u međuspremnik:', text);
    } catch (error) {
      alert('Greška pri kopiranju u međuspremnik:', error);
    }
  };

Metod writeText prihvata tekst koji treba da se prebaci u međuspremnik. Ovaj metod je asinhron, pa je potrebno koristiti ključnu reč await pre nastavka.

Ukoliko je tekst uspešno kopiran u međuspremnik, prikažite poruku o uspehu, u suprotnom prikažite poruku o grešci kao upozorenje.

Provera dozvola pretraživača

Kao dobra praksa, bitno je proveriti da li je korisnik dozvolio pretraživaču pristup međuspremniku. Možete proveriti da li je korisnik dao dozvolu za upisivanje u međuspremnik korišćenjem navigator.permissions Web API-ja pre kopiranja u međuspremnik, kao što je prikazano ispod.

 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('Tekst je kopiran u međuspremnik!');
        } else {
            throw new Error("Nije moguće pristupiti međuspremniku. Proverite dozvole pretraživača.")
        }
    } catch (error) {
        alert('Greška pri kopiranju u međuspremnik:', error);
    }
};

U izmenjenoj funkciji iznad, samo kada je korisnik dao dozvolu za pisanje u međuspremnik, vrši se upisivanje u njega. U suprotnom, funkcija vraća grešku.

Upotreba NPM paketa za kopiranje u međuspremnik u React-u

Ukoliko ne želite direktno da koristite Clipboard API, na raspolaganju vam je nekoliko NPM paketa koje možete iskoristiti. Za React aplikacije, možete koristiti react-copy-to-clipboard paket. On je veoma popularan sa više od milion preuzimanja nedeljno i jednostavan je za upotrebu.

Instalirajte ga u vašu React aplikaciju pokretanjem sledeće komande u terminalu:

 npm install react-copy-to-clipboard

Kada se instalira, uvezite komponentu CopyToClipboard iz react-copy-to-clipboard u vašu CopyButton komponentu.

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

Komponenta CopyToClipboard prihvata tekst koji želite da kopirate kao parametar (prop). Takođe, prihvata i potkomponentu koja, kada se klikne, pokreće akciju kopiranja.

Na primer, koristite kod ispod za kopiranje u međuspremnik pomoću dugmeta:

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

Obratite pažnju na funkciju onCopy. Ona prihvata dva argumenta, tekst i rezultat, gde je tekst, tekst koji je kopiran, a rezultat je logička vrednost koja ukazuje da li je akcija kopiranja bila uspešna ili ne.

Zašto koristiti funkciju Copy to Clipboard?

Naučili ste kako da koristite Clipboard API i paket react-copy-to-clipboard za prebacivanje teksta u međuspremnik u React aplikaciji. Iako korisnici vaše aplikacije mogu jednostavno da selektuju tekst i koriste funkciju kopiranja svog pretraživača, klik za kopiranje teksta je jednostavniji i bolji za korisničko iskustvo.