我正在尝试创建副本到剪贴板组件。这是我的代码:
sed 's/[[:space:]]*[^[:space:]]*//'
我收到import React from 'react';
import logo from './logo.svg';
import './App.css';
class CopyClipboard extends React.Component {
constructor(props) {
super(props);
this.state = { copySuccess: 'Copy to Clipboard!' }
}
copyToClipboard = (e) => {
this.textContent.select();
document.execCommand('copy');
e.target.focus();
this.setState({ copySuccess: 'Copied to Clipboard!' });
};
render() {
return (
<div class="positioning">
{
//if i need
}
<p onClick={this.copyToClipboard} ref={(c) => (this.textContent = c)}>yotam@gmail.com</p>
<div class="success">{this.state.copySuccess}</div>
</div>
);
}
}
export default CopyClipboard;
错误。但是,如果我使用Parsing error: Unexpected token
标签,那么它的工作正常。我做错了什么?
答案 0 :(得分:1)
对于p标签,您不能使用.select
。
您需要使用selectNode
和addRange
为选择功能尝试类似的操作
copyToClipboard = async e => {
window.getSelection().removeAllRanges();
var range = document.createRange();
range.selectNode(this.textContent);
window.getSelection().addRange(range);
document.execCommand("copy");
window.getSelection().removeAllRanges();
this.setState({ copied: true });
};
Click here也是一个可行的例子
也check out this answer在非输入标签之间选择文本。