将p标签之间的文本复制到React中的剪贴板

时间:2019-06-17 04:21:15

标签: javascript reactjs

我正在尝试创建副本到剪贴板组件。这是我的代码:

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标签,那么它的工作正常。我做错了什么?

1 个答案:

答案 0 :(得分:1)

对于p标签,您不能使用.select

您需要使用selectNodeaddRange

为选择功能尝试类似的操作

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在非输入标签之间选择文本。