vue使用clipboard.js 《一键复制》

44 篇文章 0 订阅
14 篇文章 1 订阅
本文介绍了在Vue项目中如何利用clipboard.js库实现文本复制功能,包括私钥和公钥的复制。首先通过npm安装clipboard,并引入element-plus的消息提示组件。然后创建clipboard.js文件,定义复制成功的回调和复制失败的回调。在组件中调用clipboard方法,根据需求复制不同的文本内容,同时显示成功或失败的消息提示。
摘要由CSDN通过智能技术生成

在这里插入图片描述

  1. 安装
npm install clipboard --save
  1. vue项目我们可以对其进行简单的处理
    我们可以在项目目录下utils(没有新建)新建一个 clipboard.js文件
import Clipboard from 'clipboard' //引入cliboard
import { ElMessage } from 'element-plus'  //消息提示

function clipboardSuccess(msg) {
  ElMessage.success(msg || '复制成功')
}

function clipboardError(msg) {
  ElMessage.error(msg || '复制失败')
}

export default function handleClipboard(text, event, msg) {
  const clipboard = new Clipboard(event.target, {
    text: () => text,
  })
  clipboard.on('success', () => {
    clipboardSuccess(msg)
    clipboard.destroy()
  })
  clipboard.on('error', () => {
    clipboardError(msg)
    clipboard.destroy()
  })
  clipboard.onClick(event)
}
  1. 在组件使用
<template>
  <div>
    <div><el-button type="primary" @click="generate">一键生成</el-button></div>
    <el-card style="margin: 10px 0">
      <div>
        <div class="conLeft">
          <div class="name">RSA私钥:</div>
          <div>
            <el-button type="primary" plain @click="handleCopyPrivateKey(privateKey, $event)"
              >复制</el-button
            >
          </div>
        </div>
        <div class="context">{{ privateKey }}</div>
      </div>
    </el-card>
    <el-card>
      <div>
        <div class="conLeft">
          <div class="name">RSA公钥:</div>
          <div>
            <el-button type="primary" plain @click="handleCopyPublicKey(publicKey, $event)"
              >复制</el-button
            >
          </div>
        </div>
        <div class="context">{{ publicKey }}</div>
      </div>
    </el-card>
  </div>
</template>

<script>
import { getRSAkey } from '@/api/configuration'
import clipboard from '@/utils/clipboard'
export default {
  data() {
    return {
      privateKey: null,
      publicKey: null,
    }
  },
  methods: {
    generate() {
      getRSAkey().then((res) => {
        if (res.code === 200) {
          this.privateKey = res.data.private_key
          this.publicKey = res.data.public_key
        }
      })
    },
    //复制私钥
    handleCopyPrivateKey(data, event) {
      clipboard(data, event)
    },
    //复制公钥
    handleCopyPublicKey(data, event) {
      clipboard(data, event)
    },
  },
}
</script>

<style lang="scss" scoped>
</style>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值