点击复制文本到剪切板-适用于页面上有多个实例的情况

        clipboard想必大家都很熟悉了,用起来也很简单,具体用法可参考 GitHub。但官方给出的使用方法只适用于页面中只有一个实例的情况,若页面中多处需要实现复制文本功能,直接使用创建实例的方法未免过于繁冗。如需要对遍历生成的列表进行复制,就需要对使用方法进行封装。

        以下代码基于vue3语法,其他环境下,原理类似。

import Clipboard from 'clipboard';
import { onUnmounted } from 'vue';

/**
 * 将文本添加至剪切版中
 *
 * useage:
 * ```js
 *     const { copy } = useClipBoard();
 *     copy("you content").then(callback)
 * ```
 * @returns copy 方法
 */
const useClipBoard = () => {
  //初始一个div节点,用于剪切版对象,并不需要添加至 dom节点中
  const el = document.createElement('div');
  //初始化剪版对象
  const clipboard = new Clipboard(el);

  onUnmounted(() => {
    clipboard.destroy();
  });
  /**
   * 将指定内容 添加 剪切版中。
   * @param {*} text  需要copy的内容
   * @returns 返回一个promise对象[可以不返回], 只是方便调用时,可以用then来写一些逻辑
   */
  const copy = (text = '') =>  {
    el.setAttribute('data-clipboard-text', text);
    //触发copy事件
    el.click();
    return Promise.resolve();
  };

  return { copy };
};

export default useClipBoard;

        使用方法如下:

<script>
import useClipBoard from 'useClipBoard';
export default {
    setup() {
        const { copy } = useClipBoard();
        copy('需要复制的文本').then(() => {
            console.log('复制成功!');
        });
    }
}
</script>

        需要注意的是,由于封装的方法中使用了 onUnmounted 生命周期钩子,在vue3中,调用 useClipBoard 方法时,必须直接在 setup 中调用,不能在 methods、computed 或其他生命周期中调用,否则实例不能被及时销毁,vue3也会给出报错信息。但 copy 方法的使用不受限制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue-ueditor 是一个基于 Vue.js 框架的富文本编辑器,它提供了丰富的功能和良好的用户体验。以下是关于 Vue-ueditor 的简要介绍: 1. 功能特点: * 支持多语言:Vue-ueditor 支持多种语言,包括中文,方便用户进行国际化。 * 丰富的功能:Vue-ueditor 提供了诸如图片上传、剪切图片、实时保存、撤销/重做、富文本编辑等功能。 * 高度定制化:用户可以根据自己的需求对编辑器进行高度定制,例如调整样式、添加插件等。 * 易于集成:Vue-ueditor 提供了一组简单的 API,方便开发者将其集成到自己的 Vue.js 项目中。 2. 使用方法: * 首先,需要在项目中安装 Vue-ueditor。可以通过 npm 命令进行安装:`npm install vueditor`。 * 在需要使用编辑器的 Vue 组件中,引入 Vue-ueditor 库,并使用它的 API 创建编辑器实例。 * 然后,可以通过调用编辑器的各种方法(如插入文本、图片等)来使用它的功能。 3. 示例代码: 以下是一个简单的示例代码,展示如何在 Vue 项目中使用 Vue-ueditor: ```vue <template> <div> <vueditor :editor="editor" /> </div> </template> <script> import VueEditor from 'vueditor'; export default { data() { return { editor: null, // 编辑器实例对象 }; }, mounted() { this.editor = new VueEditor({ // 配置项 height: '500px', // 设置编辑器高度 lang: 'zh_CN', // 设置语言为中文 imagePath: '/ueditor/php/upload/', // 设置图片上传地址 }); this.editor.ready(() => { // 编辑器加载完成后的操作,例如初始化内容等 }); this.editor.render(); // 渲染编辑器到指定容器中 }, }; </script> ``` 以上是对 Vue-ueditor 的简要介绍,具体的使用方法和配置项可以参考官方文档。Vue-ueditor 是一个功能强大、易于集成的富文本编辑器,适合在各种场景下使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值