javascript - 在 React JS 中将值复制到剪贴板而不显示虚拟元素

标签 javascript reactjs

我需要将一些文本复制到剪贴板(我们使用的是 React JS,但更通用的方法也可以),但我当前遇到的问题是文本需要存在于文档中命令选择/复制它。

我们想要复制到剪贴板的文本并不是我们想要实际显示在页面上的内容。我尝试查看类似的问题:react: copy component state value to clipboard without dummy element .

基本上做这样的事情:

function copyToClipboard(text){
    var dummy = document.createElement("input");
    document.body.appendChild(dummy);
    dummy.setAttribute('value', createdMyTextHere);
    // dummyElement.style.display = "none" - doesn't work because then we can't select from it
    dummy.select();
    document.execCommand("copy");
    document.body.removeChild(dummy);
}

我做了OP所做的事情,但问题是在某些情况下(例如在极端负载下或者如果在添加元素和从文档中删除元素之间存在某种延迟)元素将显示得非常明显短暂然后消失,导致屏幕上出现一点闪烁。

我尝试将元素设置为 hidden 或设置 display:nonehidden 仍然会导致为元素创建空间,并且display:none 导致我们根本无法从元素中进行选择。

关于如何解决此问题有什么建议吗?

最佳答案

我建议this 。它是一个 npm 包,可让您将任何文本复制到客户端的剪贴板。 要复制任何文本:

<CopyToClipboard text={'Your custom text here'}
  onCopy={() => this.setState({copied: true})}>
  <span>Copy to clipboard with span</span>
</CopyToClipboard>

关于javascript - 在 React JS 中将值复制到剪贴板而不显示虚拟元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62839647/

相关文章:

javascript - 如何在 Reactjs 组件中使用普通 JavaScript?

javascript - 语法荧光笔不检测新行

reactjs - 映射调度到属性 : any point?

javascript - 停止 iPad 键盘弹出

javascript - 使用代码镜像。 "Cannot set property ' modeOption'未定义”

javascript - 如何在 jQuery +jQuery Mobile 中添加行删除选项?

javascript - .push() 在 Next.js 上不正确地推送两次

javascript - 如何在带有 react-alert 的组件中显示消息?

javascript - react 路由器和 typescript 抛出 "Can' t解析 'react-router-dom'“错误

javascript - 如何为react-csv列提供日期格式