useClipboard
響應式 Clipboard API。提供響應剪貼簿命令(剪下、複製和貼上)以及非同步讀取和寫入系統剪貼簿的功能。剪貼簿內容的存取受 Permissions API 限制。未經使用者許可,不允許讀取或變更剪貼簿內容。
透過 Vue School 的免費影片課程,學習如何響應式地將文字儲存到剪貼簿!示範
您的瀏覽器不支援 Clipboard API
用法
vue
<script setup lang="ts">
import { useClipboard } from '@vueuse/core'
const source = ref('Hello')
const { text, copy, copied, isSupported } = useClipboard({ source })
</script>
<template>
<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>
</template>
設定 legacy: true
以在 Clipboard API 不可用時保持複製能力。它將使用 execCommand 作為後備方案來處理複製。
元件用法
此函式也透過
@vueuse/components
套件提供無渲染元件版本。了解更多關於用法的資訊。
vue
<template>
<UseClipboard v-slot="{ copy, copied }" source="copy me">
<button @click="copy()">
{{ copied ? 'Copied' : 'Copy' }}
</button>
</UseClipboard>
</template>
類型宣告
顯示類型宣告
typescript
export interface UseClipboardOptions<Source> extends ConfigurableNavigator {
/**
* Enabled reading for clipboard
*
* @default false
*/
read?: boolean
/**
* Copy source
*/
source?: Source
/**
* Milliseconds to reset state of `copied` ref
*
* @default 1500
*/
copiedDuring?: number
/**
* Whether fallback to document.execCommand('copy') if clipboard is undefined.
*
* @default false
*/
legacy?: boolean
}
export interface UseClipboardReturn<Optional> {
isSupported: ComputedRef<boolean>
text: ComputedRef<string>
copied: ComputedRef<boolean>
copy: Optional extends true
? (text?: string) => Promise<void>
: (text: string) => Promise<void>
}
/**
* Reactive Clipboard API.
*
* @see https://vueuse.dev.org.tw/useClipboard
* @param options
*/
export declare function useClipboard(
options?: UseClipboardOptions<undefined>,
): UseClipboardReturn<false>
export declare function useClipboard(
options: UseClipboardOptions<MaybeRefOrGetter<string>>,
): UseClipboardReturn<true>
原始碼
貢獻者
變更日誌
v12.8.0
於 2025/3/5v12.5.0
於 2025/1/22v12.4.0
於 2025/1/10v12.3.0
於 2025/1/259f75
- feat(toValue): 棄用 @vueuse/shared
中的 toValue
,改用 Vue 原生型別v12.0.0-beta.1
於 2024/11/21v10.9.0
於 2024/2/27v10.6.0
於 2023/11/9v10.0.0-beta.4
於 2023/4/134d757
- feat(types)!: 將 MaybeComputedRef
重新命名為 MaybeRefOrGetter
0a72b
- feat(toValue): 將 resolveUnref
重新命名為 toValue