react: copy a year ago
copy text
copy纯文本可以使用 react-copy-to-clipboard
使用说明:
- 1, 先引入
CopyToClipboard
- 2, 点击
CopyToClipboard
组件 会触发onCopy()
方法, 然后自动copy text属性指向的变量值
demo如下:
import { memo, useEffect, useState } from 'react'
import CopyToClipboard from 'react-copy-to-clipboard'
const Subject = memo(({item}:{item:jobItem}) => {
const [subject,setSubject] = useState<string>('')
const [subjectCopyColor,setSubjectCopyColor] = useState<string>('#FF8533')
useEffect(()=>{
setSubject(item?.subject[0])
},[item])
const copySubject = () =>{
setSubjectCopyColor("#ccc")
setTimeout(()=>{
setSubjectCopyColor("#FF8533")
},600)
}
return (
<>
<section>
<div className="left">
Subject:
</div>
<div className="mid">
<input type='text' className='sub' value={subject} onChange={e=>setSubject(e.target.value)}
/>
</div>
<div className="right">
<CopyToClipboard text={subject}
onCopy={copySubject}>
<span className='iconfont icon-copy' style={{color:subjectCopyColor}}></span>
</CopyToClipboard>
</div>
</section>
</>
)
})
export default Subject
额外依赖:
"@types/react-copy-to-clipboard": "^5.0.7",
copy html
核心 util/util.tsx
:
export function copyToClip(str:string|undefined) {
/* Get the text field */
/* Alert the copied text */
// alert("Copied the text: " + copyText.value);
function listener(e:ClipboardEvent) {
e.clipboardData?.setData("text/html", str!);
e.clipboardData?.setData("text/plain", str!);
e.preventDefault();
}
document.addEventListener("copy", listener);
document.execCommand("copy");
document.removeEventListener("copy", listener);
};
demo如下: 点击copy按钮会自动copy div里的html字符串
import React, { memo, useRef } from 'react'
import { Button } from 'antd'
import { copyToClip } from '../../../../utils/utils'
const Item = memo() => {
//copy
const emailContentRef = useRef<HTMLDivElement>(null)
return (
<>
<Button type='primary' size='small' onClick={()=>copyToClip(emailContentRef.current?.innerHTML)}>copy</Button>
<div ref={emailContentRef}>
</div>
</>
)
})
export default Item
- 上一篇: golang的goproxy配置
- 下一篇: nginx配置文件