コンテンツへスキップ

useClipboard

カテゴリ
エクスポートサイズ
1.02 kB
最終更新日
先週
関連

リアクティブなクリップボード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>

Clipboard APIが利用できない場合でもコピー機能を維持するには、legacy: trueに設定します。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: Ref<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.dokyumento.jp/useClipboard
 * @param options
 */
export declare function useClipboard(
  options?: UseClipboardOptions<undefined>,
): UseClipboardReturn<false>
export declare function useClipboard(
  options: UseClipboardOptions<MaybeRefOrGetter<string>>,
): UseClipboardReturn<true>

ソースコード

ソースコードデモドキュメント

コントリビューター

Anthony Fu
Jelf
Sanxiaozhizi
Anthony Fu
Mr.Hope
Alexzvn
Cat1007
丶遠方
Olusola Olawale
Lumdzeehol
Lumdzeehol
Curt Grimes
wheat
洪布斯 (ホンブス)
karma
Shinigami (シニガミ)
Alex Kozack (アレックス・コザック)
Antério Vieira (アンテリオ・ヴィエイラ)

変更ログ

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)!: MaybeComputedRefMaybeRefOrGetterに名前変更
0a72b - feat(toValue): resolveUnreftoValueに名前変更
v9.4.0 2022年10月25日
5ec65 - feat: レガシーコピーのサポート (#2336)

MITライセンスの下でリリースされています。