React Academy · Pelajaran

API Papan Klip: Menyalin dan Menampal dalam React

Laksanakan butang salin ke papan klip menggunakan API Papan Klip moden dan sediakan sandaran yang sesuai untuk pelayar lama.

Pelajaran 1 daripada 413 langkah

API Papan Klip: Menyalin dan Menampal dalam React ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Menulis ke Papan Keratan

navigator.clipboard.writeText(text) menulis rentetan ke papan keratan sistem dan mengembalikan janji. Ia ialah pengganti moden untuk pendekatan lama execCommand. Sentiasa await janji tersebut dan kendalikan kemungkinan penolakannya, contohnya apabila pengguna menolak akses papan keratan.

Membaca daripada Papan Keratan

navigator.clipboard.readText() membaca kandungan semasa papan keratan sebagai rentetan dan turut mengembalikan janji. Pembacaan memerlukan kebenaran clipboard-read, yang akan diminta oleh pelayar daripada pengguna. Dalam amalan, pembacaan papan keratan kurang kerap digunakan berbanding penulisan dalam aplikasi React biasa.

Penulisan ke Papan Keratan Memerlukan Gerak Isyarat Pengguna

Pelayar menetapkan bahawa clipboard.writeText hanya boleh dipanggil dalam pengendali gerak isyarat pengguna, seperti peristiwa klik atau penekanan kekunci. Memanggilnya di dalam useEffect atau secara tak segerak selepas gerak isyarat akan menghasilkan ralat keselamatan. Sentiasa cetuskan penulisan itu secara terus daripada pengendali onClick.

Corak Antara Muka Salin ke Papan Keratan

Corak standardnya ialah: pengguna mengklik butang salin, pengendali anda memanggil navigator.clipboard.writeText(value), selepas berjaya anda menetapkan keadaan copied kepada true, dan butang itu memaparkan tanda semak atau label “Disalin!” buat sementara. Selepas tempoh yang singkat, butang kembali kepada keadaan biasa.

Membina Cangkuk useCopyToClipboard

Rangkumkan logik ini dalam cangkuk useCopyToClipboard yang mengembalikan tupel: [copied, copyFn]. Nilai boolean copied mengawal maklum balas antara muka, manakala copyFn menerima teks untuk disalin. Cangkuk ini mengendalikan penulisan tak segerak dan sebarang ralat secara dalaman supaya komponen kekal ringkas.

Menetapkan Semula Keadaan Salinan

Di dalam cangkuk tersebut, selepas penyalinan berjaya, tetapkan setCopied(true) dan jadualkan penetapan semula dengan setTimeout(() => setCopied(false), 2000). Simpan ID tamat masa dan padamkannya dalam pembersihan useEffect untuk mengelakkan kemas kini keadaan selepas nyahpasang. Ini mengelakkan amaran “keadaan tidak boleh dikemas kini pada komponen yang telah dinyahpasang”.

Sandaran Lama dengan execCommand

Pelayar lama dan halaman bukan HTTPS tidak menyokong API Papan Keratan. Sandaran lama ini mencipta textarea sementara, menetapkan nilainya, menambahkannya pada badan, memanggil document.execCommand('copy'), kemudian membuang elemen tersebut. Pendekatan ini segerak dan berfungsi di mana-mana, walaupun sudah tidak disyorkan.

Mengesan Ketersediaan API Papan Keratan

Sebelum menggunakan API Papan Keratan, semak: navigator.clipboard && typeof navigator.clipboard.writeText === 'function'. Jika tidak tersedia, gunakan pendekatan lama execCommand sebagai sandaran. Semakan pencegahan ini mengelakkan ralat semasa pelaksanaan dalam persekitaran yang tidak menyokong API tersebut.

Kebenaran Membaca Papan Keratan

Pembacaan papan keratan memerlukan kebenaran pengguna melalui API Kebenaran. Anda boleh menanyakan keadaan semasa: navigator.permissions.query({ name: 'clipboard-read' }) mengembalikan PermissionStatus dengan state bernilai granted, denied atau prompt. Pelayar akan meminta kebenaran secara automatik apabila anda memanggil readText().

Keperluan HTTPS

API Papan Keratan hanya tersedia dalam konteks selamat, iaitu HTTPS atau localhost. Pada halaman HTTP, navigator.clipboard bernilai undefined. Ini ialah sekatan keselamatan kerana kandungan papan keratan mungkin sensitif. Sentiasa semak ketersediaan API sebelum merujuk kaedahnya untuk mengelakkan ralat rujukan null.

Menguji Papan Keratan dalam jsdom

jsdom (digunakan oleh Jest) tidak melaksanakan API Papan Keratan. Buat tiruannya dalam persediaan ujian anda: Object.assign(navigator, { clipboard: { writeText: jest.fn().mockResolvedValue(undefined) } }). Ini membolehkan anda menguji bahawa komponen anda memanggil writeText dengan argumen yang betul tanpa persekitaran pelayar sebenar.

Keperluan Penulisan Papan Keratan

Bilakah navigator.clipboard.writeText() boleh dipanggil dengan selamat dalam pelayar?

Ringkasan Pelajaran: API Papan Keratan dalam React

Gunakan navigator.clipboard.writeText() dalam pengendali klik untuk menyalin teks. Bina cangkuk useCopyToClipboard yang mengembalikan [copied, copyFn] dengan set semula bermasa. Sentiasa semak ketersediaan API, sediakan sandaran execCommand untuk pelayar lama, dan buat tiruan navigator.clipboard dalam ujian Jest.

Percuma untuk bermula

Pelajari React dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
88
Pelajaran
324

Soalan Lazim

Adakah pelajaran “API Papan Klip: Menyalin dan Menampal dalam React” percuma?

Ya — teks penuh “API Papan Klip: Menyalin dan Menampal dalam React” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “API Papan Klip: Menyalin dan Menampal dalam React”?

Laksanakan butang salin ke papan klip menggunakan API Papan Klip moden dan sediakan sandaran yang sesuai untuk pelayar lama. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan React Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “API Papan Klip: Menyalin dan Menampal dalam React” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. API Papan Klip: Menyalin dan Menampal dalam React
  2. API Geolokasi dalam Komponen React
  3. API Pemberitahuan dan Pengendalian Kebenaran
  4. IntersectionObserver untuk Kesan yang Dicetuskan Skrol
← Kembali ke React Academy