clipboard.on第一次监听失效,第二次成功!!!

概述:项目中遇到复制的需求,复制成功后弹出tost提示

clipboard官网地址:http://www.clipboardjs.cn/

遇到的问题:使用clipboard.on('success')的时候, 第一次复制时没有走到success的方法里去,第二次才会走success方法,所以点两次才会弹出toast

ps: 通篇写法为react写法。

初始写法:

npm install clipboard --save

import ClipboardJs from 'clipboard';

 

const handleCopyClick = (event) => {

  const clipboard = new ClipboardJs('.copy');

  clipboard.on('success', () => {

    Message.success('复制成功');

    clipboard.destroy(); 

  })

}

<span className="copy" data-clipboard-text="复制id" onClick={handleCopyClick}>

  <Icon type="copy" />

</span>

 

改良后写法:

把clipboard抽出去,写成一个单独的js文件

import clipboard from './clipboard.js';

 

const handleCopyClick = (id, event) => {

  clipboard(id, event);

}

<span onClick={(event) => handleCopyClick(id, event)}>

  <Icon type="copy" />

</span>

 

clipboard.js文件:

import ClipboardJs from 'clipboard';

 

export default function handleClipboard(text, event) {

  const clipboard = new Clipboard(event.target, {

    text: () => text;

  });

  clipboard.on('success', () => {

    Message.success('复制成功');

    clipboard.destroy();

  });

  clipboard.on('error', () => {

    clipboard.destroy();

  });

 

  clipboard.onClick(event); // 解决!!

}

 

posted @ 2020-07-23 11:29  凹润之之之  阅读(2218)  评论(0编辑  收藏  举报