React实现复制功能
1、用js原生监听copy事件
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><script type="text/javascript">window.onload = function(){document.addEventListener("copy", copy);function copy(e){//做兼容e = window.event ||e;//阻止默认事件行为(复制文本)e.preventDefault();//指定添加数据e.clipboardData.setData("text", "hello,world");}}</script></body>
</html>
2、用复制工具
下载安装:npm i --save copy-to-clipboard
使用:
import React, {Component
} from 'react';
import copy from 'copy-to-clipboard';class App extends Component {handleClick = (e) => {copy(e.target.value)}render() {return (<div className="App"><p><input placeholder='请输入' onClick={this.handleClick}/> </p><textarea></textarea></div>);}
}
3、封装复制函数
/*** 复制文本到剪切板中** @export* @param {*} value 需要复制的文本* @param {*} cb 复制成功后的回调*/
export function copy(value, cb) {// 动态创建 textarea 标签const textarea = document.createElement('textarea')// 将该 textarea 设为 readonly 防止 iOS 下自动唤起键盘,同时将 textarea 移出可视区域textarea.readOnly = 'readonly'textarea.style.position = 'absolute'textarea.style.left = '-9999px'// 将要 copy 的值赋给 textarea 标签的 value 属性 // 网上有些例子是赋值给innerText,这样也会赋值成功,但是识别不了\r\n的换行符,赋值给value属性就可以textarea.value = value// 将 textarea 插入到 body 中document.body.appendChild(textarea)// 选中值并复制textarea.select()textarea.setSelectionRange(0, textarea.value.length)document.execCommand('Copy')document.body.removeChild(textarea)if (cb && Object.prototype.toString.call(cb) === '[object Function]') {cb()}
}
使用:
import { copy } from '@/xxx/xxx'let value = '嘿嘿\r\n我换行了'
copy(value, () => {console.log('复制成功')
})
React实现复制功能相关推荐
- react非常适合入门者学习使用的后台管理框架
项目简介 该项目提供一个非常简洁的后台管理ui界面,非常适合初学者学习使用.项目结构: 项目地址:GitHub项目地址 技术栈 - react - antd - react-router-dom - ...
- 在 react 里使用 antd
在 react 里使用 antd 在 powershell 里npm i antd 引入方式: import '../node_modules/antd/dist/antd.css'
- 在React Hook里使用history.push跳转
在React Hook里使用history.push跳转 react hook里用不了this.props.history的解决方法 首先引入 import { useHistory } from ' ...
- 在react hook里使用mobx(配置mobx依赖)
在powershell里安装依赖 (直接npm i mobx或者npm i mobx-react是会报错的) npm i mobx mobx-react --save save是下载到"de ...
- React router 的 Route 中 component 和 render 属性理解
React router 的 Route 中 component 和 render 属性理解 Route 标签的三个互斥属性 render.component.children Route 就是用来匹 ...
- react 子组件获取变量属性值
刚刚遇到一个问题:子组件属性值绑定了变量,但是在子组件的componentDidMoiunt中拿到的值始终是undefinded.如下: 1 <PieInfo 2 title='有效病案' 3 ...
- 超简单的react和typescript和引入scss项目搭建流程
1.首先我们先创建一个react项目,react官网也有react项目搭建的命令 npx create-react-app my-app cd my-app 2.安装我们项目需要的样式依赖,这个项目我 ...
- React Native之ViewPagerAndroid跳转页面问题
前言: 网上目前react-native的教程较少,加上许多帖子还是用的ES5(2015年6月已发布ES6标准),有些细节很难找到答案,这里把遇到的问题做一个分享,让学习者尽量少踩坑. 出现问题: 1 ...
- http状态404 vscode_VS Code 调试完全攻略(5):基于浏览器的 React 应用
每日前端夜话第344篇 翻译:疯狂的技术宅 作者:Charles Szilagyi 来源:charlesagile 正文共:1750 字 预计阅读时间:7 分钟 这次我们来研究怎样把调试器连接到用 C ...
最新文章
- 手写js的insertAfter
- fastDFS安装及配置
- 1在mysql进行定义操作系统_Mysql基础知识一
- 关于云开发新服务“实时数据推送”,你需要了解的全在这了!
- 从Android源码的角度分析Binder机制
- Deepin-安装QQ音乐(Windows程序)
- mysql三高讲解(二):2.1 索引组织表
- JZOJ 1236. 邦德I
- 高效点的全排列算法---堆算法(跟堆排序没关系)
- 【mybatis】基础环境搭建
- 网易云课堂C++开发工程师案例-网吧前台收银系统(MFC+ADO)C++收银系统完整
- 华硕B85M-D台式机主板音响没反应,更新驱动还是找不到realtek高清晰音频管理器原因及解决方案
- 版本控制软件 perforce 与 git
- amd显卡用黑苹果输出黑屏_黑苹果AMD NVIDIA Intel显卡咋驱动?速戳这里
- cesium鼠标控制键盘_Package - cesium-plotting-symbol
- 改造 Firefox 浏览器——GitHub 热点速览 v.21.23
- BZOJ 1127: [POI2008]KUP 最大子矩阵
- 全网最全,抖音Tik Tok Scheme,startActivity地址更新中
- 1、用Keil5开发TM4C123G单片机的软件准备
- matplotlib可视化初相识