今天我學習了 useClipboard,這是一個讓資料輕鬆複製到剪貼簿的功能。雖然看似簡單,卻非常實用。正當我深入研究這個功能時,我的朋友水豚君悄然來到我身邊,以他特有的平靜方式指導我。
「學習就像複製資料到剪貼簿,」水豚君娓娓道來,「僅僅掌握操作還不夠,你要理解為什麼要複製,何時需要複製—這才是關鍵。」
他的話讓我陷入沉思。我確實一直在努力學習 VueUse 的各種功能,但有時會陷入只關注表面操作的陷阱,而忽視了背後的動機。今天,我下定決心不僅要學習如何使用功能,更要深入思考它們的應用場景。
水豚君或許是個沉默寡言的老師,但他的教導卻深入骨髓。我決心將這種學習態度貫徹到往後的每一天。無論是 useClipboard 還是其他功能,我都會努力領會它們的真正價值。
useClipboard
是一個用於操作剪貼簿的 VueUse 函式。本文將詳細介紹其功能、參數和使用場景,並提供實用範例。
useClipboard
APIuseClipboard
提供了對瀏覽器剪貼簿 API 的響應式封裝。它允許讀取和寫入剪貼簿內容,並提供了複製操作的狀態管理。這個函式適用於需要與剪貼簿交互的各種場景,如「複製到剪貼簿」功能或監控剪貼簿變化。
名稱 | 類型 | 說明 |
---|---|---|
options |
UseClipboardOptions |
可選參數,用於設定剪貼簿操作的行為。 |
名稱 | 類型 | 默認值 | 說明 |
---|---|---|---|
read |
boolean |
false |
是否啟用剪貼簿讀取功能。 |
source |
MaybeRefOrGetter<string> |
- | 要複製到剪貼簿的內容來源。 |
copiedDuring |
number |
1500 |
複製成功後,copied ref 保持為 true 的時間(毫秒)。 |
legacy |
boolean |
false |
當 Clipboard API 不可用時,是否回退使用 document.execCommand('copy')。 |
useClipboard
返回一個包含以下屬性的對象:
名稱 | 類型 | 說明 |
---|---|---|
isSupported |
Ref<boolean> |
表示瀏覽器是否支持 Clipboard API 的響應式引用。 |
text |
ComputedRef<string> |
當前剪貼簿文本內容的計算屬性。 |
copied |
ComputedRef<boolean> |
表示是否剛完成複製操作的計算屬性。 |
copy |
(text?: string) => Promise<void> |
將文本複製到剪貼簿的函式。如果提供 source 選項,則 text 參數是可選的。 |
function useClipboard(options?: UseClipboardOptions): UseClipboardReturn
<template>
<div style="margin:15px;">
<div>useClipboard 測試範例</div>
<div v-if="isSupported" style="margin-top:5px; padding:15px; border-style: solid;border-width: 1px;">
<p>
目前已被複製的內容: <code>{{ text || 'none' }}</code>
</p>
<input v-model="input" type="text" placeholder="這裡輸入想複製的字" style="width:250px;border-style: solid;border-width: 1px; margin-right:5px;padding-left:5px">
<button @click="copy(input)" style="border-style: solid;border-width: 1px;padding:2px;">
複製
</button>
<div v-if="copied" style="margin-top:5px; color:red;">複製成功!找個地方 Ctrl(⌘)+V 試試看~</div>
</div>
<p v-else>
您的瀏覽器不支援剪貼簿的 API
</p>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { useClipboard } from '@vueuse/core'
const input = ref('點右邊複製按鈕複製這段文字')
const { text, isSupported, copy, copied } = useClipboard()
</script>
<template>
<div>
<button @click="copy('自定義文本')">複製自定義文本</button>
<p v-if="copied">複製成功! (3秒後消失)</p>
</div>
</template>
<script setup>
import { useClipboard } from '@vueuse/core'
const { copy, copied } = useClipboard({ copiedDuring: 3000 })
</script>
useClipboard
的使用場景useClipboard
善用 useClipboard
可顯著提升用戶體驗、簡化剪貼簿相關功能的開發流程,同時還處理跨瀏覽器的兼容性。無論是表單處理、內容分享還是資料輸入等場景,useClipboard
都是一個非常好用的工具。