Ich verwende ReactJS und wenn ein Benutzer auf einen Link klickt, möchte ich Text in die Zwischenablage kopieren.
Ich verwende Chrome 52 und muss keine anderen Browser unterstützen.
Ich kann nicht verstehen, warum dieser Code nicht dazu führt, dass die Daten in die Zwischenablage kopiert werden. (Der Ursprung des Code-Snippets stammt aus einem Reddit-Beitrag).
Mache ich das falsch Kann jemand vorschlagen, dass es eine "richtige" Möglichkeit gibt, das Kopieren in die Zwischenablage mithilfe von reactjs zu implementieren?
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
Herzog Dougal
quelle
quelle
Antworten:
Ich persönlich sehe dafür keine Notwendigkeit für eine Bibliothek. Unter http://caniuse.com/#feat=clipboard wird es derzeit weitgehend unterstützt. Sie können jedoch weiterhin prüfen, ob die Funktionalität im aktuellen Client vorhanden ist, und die Schaltfläche zum Kopieren einfach ausblenden, wenn dies nicht der Fall ist.
Update: Mit React Hooks in React 16.7.0-alpha.0 neu geschrieben
quelle
Property 'select' does not exist on type 'never'
Verwenden Sie diese einfache Inline-Funktion onClick für eine Schaltfläche, wenn Sie programmgesteuert Daten in die Zwischenablage schreiben möchten.
quelle
Sie sollten auf jeden Fall in Betracht ziehen, ein Paket wie @ Shubham zu verwenden, aber ich habe einen funktionierenden Codepen erstellt, der auf dem basiert, was Sie beschrieben haben: http://codepen.io/dtschust/pen/WGwdVN?editors=1111 . Es funktioniert in meinem Browser in Chrome. Vielleicht können Sie sehen, ob ich dort etwas getan habe, das Sie verpasst haben, oder ob Ihre Anwendung eine erweiterte Komplexität aufweist, die dies verhindert.
quelle
Der einfachste Weg ist die Verwendung der
react-copy-to-clipboard
npm-Paket zu verwenden.Sie können es mit dem folgenden Befehl installieren
Verwenden Sie es wie folgt.
Eine ausführliche Erklärung finden Sie unter folgendem Link
https://www.npmjs.com/package/react-copy-to-clipboard
Hier ist eine laufende Geige .
quelle
onpaste
Ereignis einsteckenWarum verwenden Sie ein npm-Paket, wenn Sie alle innerhalb einer einzigen Schaltfläche wie dieser erhalten können?
Ich hoffe das hilft @jerryurenaa
quelle
Warum nicht nur die Erfassungsmethode event clipboardData verwenden?
e.clipboardData.setData(type, content)
?Meiner Meinung nach ist dies die einfachste Methode, um etw in die Zwischenablage zu verschieben. Überprüfen Sie dies (ich habe es verwendet, um Daten während der nativen Kopieraktion zu ändern):
Ich bin diesem Weg gefolgt: https://developer.mozilla.org/en-US/docs/Web/Events/copy
Prost!
BEARBEITEN: Zu Testzwecken habe ich Codepen hinzugefügt: https://codepen.io/dprzygodzki/pen/ZaJMKb
quelle
Ihr Code sollte perfekt funktionieren, ich benutze ihn genauso. Stellen Sie nur sicher, dass sich das erstellte Element innerhalb dieses Modals befindet, wenn das Klickereignis in einem Popup-Bildschirm wie einem Bootstrap-Modal oder Ähnlichem ausgelöst wird. Andernfalls wird es nicht kopiert. Sie können jederzeit die ID eines Elements in diesem Modal (als zweiten Parameter) angeben und mit getElementById abrufen und dann das neu erstellte Element anstelle des Dokuments an dieses Element anhängen. Etwas wie das:
quelle
Ich habe einen sehr ähnlichen Ansatz gewählt wie einige der oben genannten, aber ich denke, er wurde etwas konkreter. Hier übergibt eine übergeordnete Komponente die URL (oder einen beliebigen Text) als Requisite.
quelle
Für diejenigen Personen, die versuchen, anstelle des Textfelds aus dem DIV auszuwählen, ist hier der Code. Der Code ist selbsterklärend, aber kommentieren Sie hier, wenn Sie weitere Informationen wünschen:
quelle
Hier ist ein weiterer Anwendungsfall, wenn Sie die aktuelle URL in Ihre Zwischenablage kopieren möchten:
Definieren Sie eine Methode
Rufen Sie diese Methode auf
quelle
quelle
Beste Lösung mit React Hooks, dafür sind keine externen Bibliotheken erforderlich
Weitere Dokumentation zu navigator.clip board , navigator.clipboard Dokumentation finden Sie hier. navigotor.clipboard wird von einer Vielzahl von Browsern unterstützt
quelle
Wenn Sie anstelle des Textfelds aus dem DIV auswählen möchten, finden Sie hier den Code. Der "Code" ist der Wert, der kopiert werden muss
quelle
Hier ist mein Code:
quelle
quelle
Den besten Weg gefunden, es zu tun. Ich meine den schnellsten Weg: w3school
https://www.w3schools.com/howto/howto_js_copy_clipboard.asp
Innerhalb einer Reaktionsfunktionskomponente. Erstellen Sie eine Funktion mit dem Namen handleCopy:
Wenn Sie React nicht verwenden, haben w3schools auch eine coole Möglichkeit, dies mit dem enthaltenen Tooltip zu tun: https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_copy_clipboard2
Wenn Sie React verwenden, sollten Sie Folgendes tun: Verwenden Sie Toastify, um die Nachricht zu benachrichtigen. https://github.com/fkhadra/react-toastify Dies ist die Bibliothek, die sehr einfach zu bedienen ist. Nach der Installation können Sie möglicherweise diese Zeile ändern:
Für so etwas wie:
Wenn Sie es verwenden möchten, vergessen Sie nicht, toastify zu installieren. importiere ToastContainer und auch Toast CSS:
und fügen Sie den Toastbehälter im Rücklauf hinzu.
quelle