Saya menggunakan ReactJS dan ketika pengguna mengklik tautan, saya ingin menyalin beberapa teks ke clipboard.
Saya menggunakan Chrome 52 dan saya tidak perlu mendukung browser lain.
Saya tidak bisa melihat mengapa kode ini tidak menghasilkan data yang disalin ke clipboard. (asal potongan kode berasal dari pos Reddit).
Apakah saya melakukan ini salah? Adakah yang bisa menyarankan apakah ada cara yang "benar" untuk menerapkan copy ke clipboard menggunakan reactjs?
copyToClipboard = (text) => {
console.log('text', text)
var textField = document.createElement('textarea')
textField.innerText = text
document.body.appendChild(textField)
textField.select()
document.execCommand('copy')
textField.remove()
}
javascript
reactjs
clipboard
Duke Dougal
sumber
sumber
Jawaban:
Saya pribadi tidak melihat perlunya perpustakaan untuk ini. Melihat http://caniuse.com/#feat=clipboard sudah cukup banyak didukung sekarang, namun Anda masih dapat melakukan hal-hal seperti memeriksa untuk melihat apakah fungsionalitas ada di klien saat ini dan cukup sembunyikan tombol salin jika tidak.
Pembaruan: Ditulis ulang menggunakan React Hooks di React 16.7.0-alpha.0
sumber
Property 'select' does not exist on type 'never'
Gunakan fungsi inClick inline sederhana ini pada tombol jika Anda ingin secara terprogram menulis data ke clipboard.
sumber
Anda harus mempertimbangkan untuk menggunakan paket seperti @Shubham di atas, tetapi saya membuat codepen yang berfungsi berdasarkan apa yang Anda jelaskan: http://codepen.io/dtschust/pen/WGwdVN?editors=1111 . Ini berfungsi di browser saya di chrome, mungkin Anda dapat melihat apakah ada sesuatu yang saya lakukan di sana yang Anda lewatkan, atau jika ada beberapa kompleksitas yang diperluas dalam aplikasi Anda yang mencegah hal ini bekerja.
sumber
Cara paling sederhana adalah menggunakan
react-copy-to-clipboard
paket npm.Anda dapat menginstalnya dengan perintah berikut
Gunakan dengan cara berikut.
Penjelasan terperinci disediakan di tautan berikut
https://www.npmjs.com/package/react-copy-to-clipboard
Ini biola lari .
sumber
onpaste
acaraMengapa menggunakan Anda memerlukan paket npm ketika Anda bisa mendapatkan semua dalam satu tombol seperti ini
Saya harap ini membantu @ jerryurenaa
sumber
Mengapa tidak menggunakan metode pengumpulan event clipboardData saja
e.clipboardData.setData(type, content)
?Menurut pendapat saya adalah metode yang paling sulit untuk mencapai mendorong di dalam clipboard, lihat ini (saya sudah menggunakannya untuk memodifikasi data saat menyalin asli):
Saya mengikuti jalur itu: https://developer.mozilla.org/en-US/docs/Web/Events/copy
Bersulang!
EDIT: Untuk tujuan pengujian, saya telah menambahkan codepen: https://codepen.io/dprzygodzki/pen/ZaJMKb
sumber
Kode Anda harus bekerja dengan sempurna, saya menggunakannya dengan cara yang sama. Hanya pastikan bahwa jika acara klik dipicu dari dalam layar pop up seperti modal bootstrap atau sesuatu, elemen yang dibuat harus berada di dalam modal itu jika tidak, ia tidak akan menyalin. Anda selalu bisa memberikan id suatu elemen dalam modal tersebut (sebagai parameter kedua) dan mengambilnya dengan getElementById, lalu menambahkan elemen yang baru dibuat ke elemen itu alih-alih dokumen. Sesuatu seperti ini:
sumber
Saya telah mengambil pendekatan yang sangat mirip dengan beberapa di atas, tetapi membuatnya sedikit lebih konkret, saya pikir. Di sini, komponen induk akan meneruskan url (atau teks apa pun yang Anda inginkan) sebagai prop.
sumber
Bagi orang-orang yang mencoba untuk memilih dari DIV daripada bidang teks, berikut adalah kodenya. Kode ini jelas tetapi komentari di sini jika Anda ingin informasi lebih lanjut:
sumber
Ini kasus penggunaan lain, jika Anda ingin menyalin url saat ini ke clipboard Anda:
Tentukan metode
Sebut metode itu
sumber
Solusi terbaik dengan kait reaksi, tidak perlu perpustakaan eksternal untuk itu
periksa di sini untuk dokumentasi lebih lanjut tentang papan navigator.clip , dokumentasi navigator.clipboard navigotor.clipboard didukung oleh sejumlah besar browser lihat di sini didukung browser
sumber
sumber
Jika Anda ingin memilih dari DIV daripada bidang teks, ini adalah kodenya. "Kode" adalah nilai yang harus disalin
sumber
ini kode saya:
sumber
sumber
Menemukan cara terbaik untuk melakukannya. maksud saya cara tercepat: w3school
https://www.w3schools.com/howto/howto_js_copy_clipboard.asp
Di dalam komponen fungsional bereaksi. Buat fungsi bernama handleCopy:
Jika tidak menggunakan Bereaksi, w3schools juga memiliki satu cara keren untuk melakukan ini dengan tooltip termasuk: https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_copy_clipboard2
Jika menggunakan Bereaksi, pikirkanlah hal yang harus dilakukan: Gunakan Toastify untuk mengingatkan pesan. https://github.com/fkhadra/react-toastify Ini adalah lib yang sangat mudah digunakan. Setelah instalasi, Anda mungkin dapat mengubah baris ini:
Untuk sesuatu seperti:
Jika Anda ingin menggunakannya, jangan lupa untuk Menginstal toastify. impor ToastContainer dan juga toasts css:
dan tambahkan wadah roti panggang kembali.
sumber