vue3实现复制到剪切板

Vue 3 想要实现复制文本到剪贴板的功能,可以使用以下几种:


1. 使用 @vueuse/core(推荐)

📌 特点:

  • 轻量级,不依赖额外插件
  • 支持 Vue 3 组合式 API
  • 支持 useClipboard 直接操作剪贴板

安装

sh 复制代码
pnpm add @vueuse/core

使用

vue 复制代码
<template>
  <div>
    <input v-model="text" placeholder="输入要复制的文本" />
    <button @click="copy">复制</button>
    <p v-if="copied">✅ 复制成功!</p>
  </div>
</template>

<script setup>
import { ref } from "vue";
import { useClipboard } from "@vueuse/core";

const text = ref("Hello, Vue!");
const { copy, copied } = useClipboard({ source: text });
</script>

📖 VueUse 文档 :useClipboard


2. 使用 vue-clipboard3

📌 特点:

  • 专门为 Vue 3 设计的剪贴板插件
  • 支持 v-copy 指令
  • 适用于选中文本并复制

安装

sh 复制代码
pnpm add vue-clipboard3

使用

vue 复制代码
<template>
  <div>
    <p ref="textRef">这是要复制的文本</p>
    <button @click="copyText">复制</button>
    <p v-if="copied">✅ 复制成功!</p>
  </div>
</template>

<script setup>
import { ref } from "vue";
import { useClipboard } from "vue-clipboard3";

const { copy, copied } = useClipboard();
const textRef = ref(null);

const copyText = async () => {
  try {
    await copy(textRef.value.innerText);
    alert("复制成功!");
  } catch (e) {
    alert("复制失败:" + e);
  }
};
</script>

📖 Vue-Clipboard3 文档 :GitHub


3. 使用 v-clipboard(支持 v-copy 指令)

📌 特点:

  • 直接使用 v-copy 指令
  • 适用于 Vue 3

安装

sh 复制代码
pnpm add v-clipboard

使用

vue 复制代码
<template>
  <div>
    <p v-copy="text">点击复制</p>
    <button v-copy="text">复制按钮</button>
  </div>
</template>

<script setup>
import { ref } from "vue";
import { createApp } from "vue";
import VClipboard from "v-clipboard";

const text = ref("Hello, Vue!");

const app = createApp({});
app.use(VClipboard);
</script>

📖 V-Clipboard 文档 :GitHub


📌 特点:

  • 无需安装插件
  • 纯 JavaScript API
  • 兼容性较好

使用

vue 复制代码
<template>
  <div>
    <input v-model="text" />
    <button @click="copyText">复制</button>
    <p v-if="copied">✅ 复制成功!</p>
  </div>
</template>

<script setup>
import { ref } from "vue";

const text = ref("Hello, Vue!");
const copied = ref(false);

const copyText = async () => {
  try {
    await navigator.clipboard.writeText(text.value);
    copied.value = true;
    setTimeout(() => (copied.value = false), 2000);
  } catch (err) {
    console.error("复制失败", err);
  }
};
</script>

5. 总结

方法 适用场景 适合程度
VueUse useClipboard 轻量级,推荐 ⭐⭐⭐⭐⭐
Vue-Clipboard3 支持 ref 选中文本复制 ⭐⭐⭐⭐
V-Clipboard 支持 v-copy 指令 ⭐⭐⭐⭐
原生 navigator.clipboard 无需额外插件 ⭐⭐⭐

推荐

  • 最简单方案 👉 useClipboard(VueUse)
  • 想用 v-copy 指令 👉 v-clipboard
  • 想复制选中文本 👉 vue-clipboard3
  • 不想安装插件 👉 navigator.clipboard
相关推荐
拆房老料1 小时前
【第四部分:Agentic 智能体设计模式】16. 一个 Prompt 搞不定复杂任务?试试 Prompt Chaining
java·前端·人工智能·设计模式·prompt
曹牧7 小时前
C#:空合并运算符
java·前端·数据库
小羊没烦恼!7 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
智能直播10 小时前
RK3518:1.5G 内存 + 8G 存储,如何跑起硬件编解码、Web、AI 识别、绿幕特效
前端·人工智能·5g
掘金酱11 小时前
【10.24 特别活动】AI 时代,程序员的新饭碗在哪里?
前端·人工智能·后端
excel11 小时前
多进程环境下使用 PM2 部署 Socket.IO:需要注意什么
前端
IT_陈寒12 小时前
Redis的原子性竟然失效了?记一次分布式锁翻车实录
前端·人工智能·后端
时间的情敌13 小时前
《回顾 2018 前端:Vue2 成熟期,Webpack4 发布,PWA 大火》
前端
Java后端的Ai之路14 小时前
前端技术Vue-09-webpack-vuejs-实战
前端·vue.js·webpack
LMT流氓兔14 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain