Vue3實(shí)現(xiàn)clipboard復(fù)制的使用示例
一個(gè)很小的交互功能,網(wǎng)上搜了一下有一個(gè) vue3-clipboard 直接支持vue3,到github倉(cāng)庫(kù)看了下,原作者已經(jīng)不維護(hù)這個(gè)項(xiàng)目了:

推薦使用 vueuse 自帶的 useclipboard 功能,由 vue 團(tuán)隊(duì)維護(hù),穩(wěn)定性基本沒(méi)問(wèn)題
官網(wǎng)鏈接:useClipboard | VueUse
官網(wǎng)的例子如下:
import { useClipboard } from '@vueuse/core'
const source = ref('Hello')
const { text, copy, copied, isSupported } = useClipboard({ source })
<div v-if="isSupported">
<button @click='copy(source)'>
<!-- by default, `copied` will be reset in 1.5s -->
<span v-if='!copied'>Copy</span>
<span v-else>Copied!</span>
</button>
<p>
Current copied: <code>{{ text || 'none' }}</code>
</p>
</div>
<p v-else>
Your browser does not support Clipboard API
</p>上面的例子并不具備通用性,我們實(shí)際應(yīng)用肯定需要再次封裝,下面給出我封裝的效果,在 Table 的每一行中,有一個(gè)name提供快捷拷貝展示效果如下:

這樣用圖標(biāo)代替復(fù)制的按鈕樣式會(huì)更加美觀一點(diǎn)
在ts工具類中封裝的通用拷貝方法,只需要傳入要復(fù)制的參數(shù)即可:
import {Component, h} from "vue";
import Icon from '@ant-design/icons-vue';
import { useClipboard } from '@vueuse/core'
import { message } from 'ant-design-vue';
const { copy, isSupported } = useClipboard();
export function renderDesignIcon (icon: Component, conf:any=null) {
return h(Icon,conf, { component: () => h(icon,) })
}
export function handleCopy (text:string) {
if (!isSupported) {
message.error("您的瀏覽器不支持Clipboard API");
return;
}
copy(text);
message.success(`復(fù)制成功:${text}`);
}
然后在使用的時(shí)候,只需要在 CopyOutlined 圖標(biāo)的點(diǎn)擊事件上,調(diào)用這個(gè)方法即可:
在 vue 模版中調(diào)用
CopyOutlined @click="handleCopy(text)" style="color: gray;"> </CopyOutlined>
在render函數(shù)中調(diào)用:
{
title: "應(yīng)用名",
dataIndex: "applicationName",
width: '180px',
customRender: ({text, record, index, column}) => {
return h('div',{}, [
`${record.applicationName} `,
renderDesignIcon(CopyOutlined, {
style: { color: 'gray' },
onClick: () => {
handleCopy(record.applicationName)
}
})
] )
},
}到此這篇關(guān)于Vue3實(shí)現(xiàn)clipboard復(fù)制的使用示例的文章就介紹到這了,更多相關(guān)Vue3 clipboard復(fù)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何在Vue項(xiàng)目中應(yīng)用TypeScript類
與如何在React項(xiàng)目中應(yīng)用TypeScript類類似在VUE項(xiàng)目中應(yīng)用typescript,我們需要引入一個(gè)庫(kù)vue-property-decorator,需要的小伙伴可續(xù)看下文具體介紹2021-09-09
vue正確使用watch監(jiān)聽(tīng)屬性變化方式
這篇文章主要介紹了vue正確使用watch監(jiān)聽(tīng)屬性變化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
vue父組件點(diǎn)擊觸發(fā)子組件事件的實(shí)例講解
下面小編就為大家分享一篇vue父組件點(diǎn)擊觸發(fā)子組件事件的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Vue filter格式化時(shí)間戳?xí)r間成標(biāo)準(zhǔn)日期格式的方法
今天小編就為大家分享一篇Vue filter格式化時(shí)間戳?xí)r間成標(biāo)準(zhǔn)日期格式的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
基于ElementUI實(shí)現(xiàn)v-tooltip指令的示例代碼
文本溢出隱藏并使用tooltip 提示的需求,相信在平時(shí)的開(kāi)發(fā)中會(huì)經(jīng)常遇到,常規(guī)做法一般是使用 elementui 的 el-tooltip 組件,在每次組件更新的時(shí)候去獲取元素的寬度/高度判斷是否被隱藏,本文給大家介紹了基于ElementUI實(shí)現(xiàn)v-tooltip指令,需要的朋友可以參考下2024-09-09
vxe-table 設(shè)置單元格垂直對(duì)齊的方法
在vxe-table中,可通過(guò)cell-style或cell-class-name設(shè)置單元格垂直對(duì)齊,使用verticalAlign: top實(shí)現(xiàn)頂部對(duì)齊,默認(rèn)為垂直居中,合并單元格時(shí)同樣支持此設(shè)置,本文給大家介紹vxe-table 設(shè)置單元格垂直對(duì)齊的方法,感興趣的朋友一起看看吧2025-06-06
Vue前端左側(cè)菜單右側(cè)內(nèi)容的網(wǎng)站界面制作過(guò)程
這篇文章主要介紹了使用Vue和ElementUI制作一個(gè)帶有左側(cè)菜單和右側(cè)內(nèi)容區(qū)的網(wǎng)站頁(yè)面的過(guò)程,文中通過(guò)CSS樣式和深度作用符,實(shí)現(xiàn)了頁(yè)面的美化和功能的完善,需要的朋友可以參考下2025-02-02

