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
相关推荐
是上好佳佳佳呀7 分钟前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记
CDN36041 分钟前
排查实录:网站偶发502/504错误?360CDN回源超时配置与日志分析技巧
前端·数据库
之歆1 小时前
Day07_CSS盒子模型 · 样式继承 · 用户代理样式
前端·css
DanCheOo1 小时前
AI 应用的安全架构:Prompt 注入、数据泄露、权限边界
前端·人工智能·prompt·安全架构
We་ct2 小时前
深度剖析浏览器跨域问题
开发语言·前端·浏览器·跨域·cors·同源·浏览器跨域
weixin_427771613 小时前
前端调试隐藏元素
前端
爱上好庆祝4 小时前
学习js的第五天
前端·css·学习·html·css3·js
C澒4 小时前
IntelliPro 产研协作平台:基于 AI Agent 的低代码智能化配置方案设计与实现
前端·低代码·ai编程
一袋米扛几楼984 小时前
【Git】规范化协作:详解 GitHub 工作流中的 Issue、Branch 与 Pull Request 最佳实践
前端·git·github·issue
网络点点滴4 小时前
前端与后端的区别与联系
前端