Vue3實(shí)現(xiàn)clipboard復(fù)制的使用示例
一個(gè)很小的交互功能,網(wǎng)上搜了一下有一個(gè) vue3-clipboard 直接支持vue3,到github倉庫看了下,原作者已經(jīng)不維護(hù)這個(gè)項(xiàng)目了:
推薦使用 vueuse 自帶的 useclipboard 功能,由 vue 團(tuán)隊(duì)維護(hù),穩(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
教你如何開發(fā)Vite3插件構(gòu)建Electron開發(fā)環(huán)境
這篇文章主要介紹了如何開發(fā)Vite3插件構(gòu)建Electron開發(fā)環(huán)境,文中給大家提到了如何讓 Vite 加載 Electron 的內(nèi)置模塊和 Node.js 的內(nèi)置模塊,需要的朋友可以參考下2022-11-11vue使用WEB自帶TTS實(shí)現(xiàn)語音文字互轉(zhuǎn)的操作方法
這篇文章主要介紹了vue使用WEB自帶TTS實(shí)現(xiàn)語音文字互轉(zhuǎn),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01vue踩坑記錄之echarts動(dòng)態(tài)數(shù)據(jù)刷新問題
這篇文章主要介紹了vue踩坑記錄之echarts動(dòng)態(tài)數(shù)據(jù)刷新問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07MAC+PyCharm+Flask+Vue.js搭建系統(tǒng)
最近新做了個(gè)項(xiàng)目,使用的是MAC+PyCharm+Flask+Vue.js搭建系統(tǒng),本文就來分享一下搭建步驟,感興趣的可以了解一下2021-05-05Vue.js實(shí)現(xiàn)拖放效果的實(shí)例
這篇文章主要介紹了Vue.js實(shí)現(xiàn)拖放效果的實(shí)例的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09vue3+vite+antd如何實(shí)現(xiàn)自定義主題
這篇文章主要介紹了vue3+vite+antd如何實(shí)現(xiàn)自定義主題問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03vue項(xiàng)目中怎樣嵌入其它項(xiàng)目的頁面
這篇文章主要介紹了vue項(xiàng)目中怎樣嵌入其它項(xiàng)目的頁面問題,具有很好 的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10