跳到主要內容

useClipboard

類別
匯出大小
1.35 kB
上次變更
5 天前
相關

響應式 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>

原始碼

原始碼示範文件

貢獻者

Anthony Fu
Anthony Fu
Jelf
Sanxiaozhizi
IlyaL
Бєляєв Віталій
Robin
Fernando Fernández
Alex Liu
Indrek Ardel
Mr.Hope
Alexzvn
Cat1007
丶远方
Olusola Olawale
Lumdzeehol
Lumdzeehol
Curt Grimes
wheat
洪布斯
karma
Shinigami
Alex Kozack
Antério Vieira

變更日誌

v12.8.0 於 2025/3/5
7432f - feat(types): 棄用 MaybeRefMaybeRefOrGetter,改用 Vue 原生型別 (#4636)
a54c4 - fix: 修正讀取權限提示時未處理的拒絕 (#4615)
v12.5.0 於 2025/1/22
01acd - feat: 當讀取/寫入失敗時,應回退到傳統剪貼簿 (#4512)
v12.4.0 於 2025/1/10
dd316 - feat: 在任何可能的地方使用被動事件處理器 (#4477)
v12.3.0 於 2025/1/2
59f75 - feat(toValue): 棄用 @vueuse/shared 中的 toValue,改用 Vue 原生型別
6860f - fix(useClipboard,useClipboardItems): 避免在初始化期間執行 "copied" 超時 (#4299)
v12.0.0-beta.1 於 2024/11/21
0a9ed - feat!: 移除 Vue 2 支援,優化捆綁包並清理程式碼 (#4349)
v10.9.0 於 2024/2/27
a9f02 - fix: 修正未定義權限時的問題 (#3812)
v10.6.0 於 2023/11/9
71b46 - feat: UseClipboard 元件 (#3359)
37e86 - fix: 在沒有權限時使用傳統方式 (#3379)
v10.0.0-beta.4 於 2023/4/13
4d757 - feat(types)!: 將 MaybeComputedRef 重新命名為 MaybeRefOrGetter
0a72b - feat(toValue): 將 resolveUnref 重新命名為 toValue

根據 MIT 許可證發布。