vue自定义指令--一键复制

vue项目中想要实现点击按钮一键复制,可以通过vue的自定义指令directive来实现

一、新建directive.js文件

新建directive.js文件,用于定义所有的自定义指令。

import {  Toast } from 'vant';

const directive = {
  // 一键复制
  copy:{
    bind (el, { value }) {
      el.$value = value;
      el.handler = async () => {
        if (!el.$value) {
          Toast.fail('没有要复制的内容');
          return;
        }
        try {
          // 直接使用 Clipboard API 复制
          await navigator.clipboard.writeText(el.$value);
          Toast.success('复制成功');
        } catch (err) {
          Toast.fail('复制失败', err);
        }
      };
      // 监听点击事件
      el.addEventListener('click', el.handler);
    },
    componentUpdated (el, { value }) {
      el.$value = value;
    },
    unbind (el) {
      el.removeEventListener('click', el.handler);
    }
  }
}

export default directive;

二、main.js文件引入

import directive from "./utils/directive";

Vue.directive('copy', directive.copy);

三、使用

在标签中通过使用v-copy=“需要复制的内容”指令,点击按钮后实现一键复制

<button 
    class="copy-button" 
    v-copy="shareInfo.URL" 
    @click="()=>{ screen2 = false }"
>复制链接</button>

 

参考链接:vue使用自定义指令实现一键复制_vue 复制-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值