当前位置:网站首页>基于clipboard.js对复制组件的封装
基于clipboard.js对复制组件的封装
2022-08-04 17:02:00 【潮汐未见潮落】
前言
在日常开发中,有时可能想实现一键复制,我们可以选择手写复制方法,也可以选择引入 clipboard.js 库帮助快速实现功能
本次封装组件使用 element-ui 的部分组件,有 icon 、message 等
安装clipboard
npm install clipboard --save
子组件
<!--
* @description: 封装点击复制的组件
* @since: v1.0
!-->
<template>
<i :class="`${icon} icon-cursor`"
title="点击复制"
@click="handleCopy($event, text)" />
</template>
<script>
// 引入 clipboard.js
import Clipboard from 'clipboard';
export default {
props: {
// 接收复制的内容
text: {
type: [String, Number],
default: null,
},
// 默认是复制 icon,可自定义 icon
icon: {
type: [String],
default: 'el-icon-copy-document',
},
// 自定义成功提示
message: {
type: [String, Number],
default: null,
},
},
methods: {
handleCopy (e, _text, message) {
const clipboard = new Clipboard(e.target, { text: () => _text });
// const messageText = message || `复制成功:${_text}`;
const messageText = message || '复制成功';
// 复制成功
clipboard.on('success', () => {
this.$message({
type: 'success',
message: messageText
});
clipboard.off('error');
clipboard.off('success');
clipboard.destroy();
});
// 复制失败
clipboard.on('error', () => {
this.$message({
type: 'warning',
message: '复制失败,请手动复制'
});
clipboard.off('error');
clipboard.off('success');
clipboard.destroy();
});
clipboard.onClick(e);
},
},
};
</script>
<style lang="scss" scoped>
.icon-cursor {
cursor: pointer;
}
</style>
父组件
<template>
<div>
<span>{
{ value }}</span>
<CopyIcon :text="value" />
</div>
</template>
<script>
import CopyIcon from '@/components/CopyIcon.vue'
export default {
components: {
CopyIcon,
},
data () {
return {
value: '这里测试一下复制组件',
};
},
};
</script>
效果
样式可以根据自己的需求修改,可以更换图标
文章如有错误,恳请大家提出问题,本人不胜感激 。 不懂的地方可以评论,我都会 一 一回复
文章对大家有帮助的话,希望大家能动手点赞鼓励,大家未来一起努力 长路漫漫,道阻且长
边栏推荐
- dotnet remoting 抛出异常
- 海报 | 夏季高温,危化品安全风险的注意事项必须get!
- 湖北移动HG680-LV_S905L3B_线刷固件包
- jMeter Transaction Controller 学习笔记
- 智慧场馆的功能有哪些
- icu是哪个国家的域名?icu是什么域名?
- Mobile Hisense IP102H_905L3-B_wire brush firmware package
- 华为云数据治理生产线DataArts,让“数据‘慧’说话”
- Mobile magic box CM211-1_YS foundry _S905L3B_RTL8822C_wire brush firmware package
- 机器学习(十八):随机搜索和XGBoost
猜你喜欢
【LeetCode每日一题】——374.猜数字大小
咪咕MGV2000KL南传_S905L3B_MT7668线刷固件包
广东移动魔百盒M411A _905L3_线刷固件包
CSDN21天学习挑战赛——程序流程控制(02)
【LeetCode Daily Question】——374. Guess the size of the number
【商家联盟】云平台—异业联盟,打造线上线下商业相结合的系统
【 Gazebo introductory tutorial] speak the second model library into robot modeling and visualization (editor) model
安装win11提示开启安全模式如何解决
Mobile magic box CM211-1_YS foundry _S905L3B_RTL8822C_wire brush firmware package
全球电子产品需求萎靡:三星越南工厂大幅压缩产能,减少工人工作日
随机推荐
18数藏解析
JVM内存和垃圾回收-08.方法区
Digital-intelligent supply chain management system for chemical manufacturing industry: build a smart supply system and empower enterprises to improve production efficiency
码蹄集 - MT3029 - 新月轩就餐
化学制品制造业数智化供应链管理系统:打造智慧供应体系,赋能企业产效提升
【LeetCode每日一题】——374.猜数字大小
机器学习(十六):主成成分分析(PCA)
智慧场馆的功能有哪些
Unity Apple登录接入
Clearance sword refers to Offer——The sword refers to Offer II 010. and the sub-array of k
mysql学习笔记——利用动态SQL和Session变量实现一个公式或者计算器
Mobile magic box CM211-1_YS foundry _S905L3B_RTL8822C_wire brush firmware package
并发编程原理学习-reentrantlock源码分析
机器人示教编程与离线编程的优缺点对比
Heilongjiang Mobile New Magic Hundred Box M411A_2+8_S905L3A_wire brush firmware package
dotnet core 隐藏控制台
麒麟信安石勇博士荣获openEuler社区年度开源贡献之星
软件测试高频面试题真实分享/网上银行转账是怎么测的,设计一下测试用例。
GraphQL 入门与实践
如何提高员工积极性?