가장 좋은 방법을 찾았습니다. 나는 가장 빠른 방법을 의미 : w3school
https://www.w3schools.com/howto/howto_js_copy_clipboard.asp
반응 기능 구성 요소 내부. handleCopy라는 함수를 작성하십시오.
function handleCopy() {
// get the input Element ID. Save the reference into copyText
var copyText = document.getElementById("mail")
// select() will select all data from this input field filled
copyText.select()
copyText.setSelectionRange(0, 99999)
// execCommand() works just fine except IE 8. as w3schools mention
document.execCommand("copy")
// alert the copied value from text input
alert(`Email copied: ${copyText.value} `)
}
<>
<input
readOnly
type="text"
value="exemple@email.com"
id="mail"
/>
<button onClick={handleCopy}>Copy email</button>
</>
React를 사용하지 않는 경우 w3schools에는 툴팁이 포함 된 멋진 방법이 있습니다 : https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_copy_clipboard2
React를 사용하는 경우 다음과 같이하십시오. Toastify를 사용하여 메시지를 경고하십시오.
https://github.com/fkhadra/react-toastify 이것은 매우 사용하기 쉬운 lib입니다. 설치 후 다음 줄을 변경할 수 있습니다.
alert(`Email copied: ${copyText.value} `)
같은 :
toast.success(`Email Copied: ${copyText.value} `)
그것을 사용하려면 toastify를 설치하는 것을 잊지 마십시오. ToastContainer를 가져오고 CSS를 토스트합니다.
import { ToastContainer, toast } from "react-toastify"
import "react-toastify/dist/ReactToastify.css"
리턴 컨테이너 안에 토스트 컨테이너를 추가하십시오.
import React from "react"
import { ToastContainer, toast } from "react-toastify"
import "react-toastify/dist/ReactToastify.css"
export default function Exemple() {
function handleCopy() {
var copyText = document.getElementById("mail")
copyText.select()
copyText.setSelectionRange(0, 99999)
document.execCommand("copy")
toast.success(`Hi! Now you can: ctrl+v: ${copyText.value} `)
}
return (
<>
<ToastContainer />
<Container>
<span>E-mail</span>
<input
readOnly
type="text"
value="myemail@exemple.com"
id="mail"
/>
<button onClick={handleCopy}>Copy Email</button>
</Container>
</>
)
}