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); // 解決!!

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM