clipboard-text 文本复制组件
<template>
  <el-tooltip
    manual
    v-model="tipVisible"
    content="复制成功!"
    placement="right"
  >
    <span @click="copyText" class="clipboard-text">
      <slot></slot>
    </span>
  </el-tooltip>
</template>

<style lang="scss" scoped>
.clipboard-text {
  cursor: copy;
}
</style>

<script>
import copy from 'copy-text-to-clipboard';
export default {
  name: 'clipboard-text',
  props: {
    delay: {
      type: Number,
      default: 500
    }
  },
  data() {
    return {
      timeoutId: null,
      text: '',
      tipVisible: false
    };
  },
  mounted() {
    this.text = this.$el.innerText;
  },
  updated() {
    this.text = this.$el.innerText;
  },
  methods: {
    timeout(callback, delay = 1000) {
      window.clearTimeout(this.timeoutId);
      this.timeoutId = window.setTimeout(() => {
        callback();
      }, delay);
    },
    copyText() {
      copy(this.text);
      this.tipVisible = true;
      this.timeout(() => {
        this.tipVisible = false;
      }, this.delay);
    }
  }
};
</script>
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。