Skip to content

useClipboardItems

Category
Export Size
Last Changed
15 minutes ago
Related

使用 剪贴板 API。提供对剪切、复制和粘贴命令的响应能力,以及异步从系统剪贴板读取和写入的功能。通过 权限 API 进行访问控制,未经用户许可,不允许读取或更改剪贴板内容。

Demo

您的浏览器不支持剪贴板 API

useClipboard 的区别

useClipboard 是一个“仅限文本”的函数,而 useClipboardItems 基于 ClipboardItem。你可以使用 useClipboardItems 复制 ClipboardItem 支持的任何内容。

使用方式

js
import { useClipboardItems } from '@vueuse/core'

const mime = 'text/html'
const source = ref([
  new ClipboardItem({
    [mime]: new Blob(['\'<b>HTML content</b>\'', { type: mime }]),
  })
])

const { content, copy, copied, isSupported } = useClipboardItems({ source })
vue
<template>
  <div v-if="isSupported">
    <button @click="copy(source)">
      <!-- 默认情况下,`copied` 将在 1.5 秒后重置 -->
      <span v-if="!copied">复制</span>
      <span v-else>已复制!</span>
    </button>
    <p>
      当前已复制内容:<code>{{ text || '无' }}</code>
    </p>
  </div>
  <p v-else>
    您的浏览器不支持剪贴板 API
  </p>
</template>

类型声明

typescript
export interface UseClipboardItemsOptions<Source>
  extends ConfigurableNavigator {
  /**
   * 启用剪贴板读取
   *
   * @default false
   */
  read?: boolean
  /**
   * 复制的数据源
   */
  source?: Source
  /**
   * 重置 `copied` ref 状态的毫秒数
   *
   * @default 1500
   */
  copiedDuring?: number
}
export interface UseClipboardItemsReturn<Optional> {
  isSupported: Ref<boolean>
  content: ComputedRef<ClipboardItems>
  copied: ComputedRef<boolean>
  copy: Optional extends true
    ? (content?: ClipboardItems) => Promise<void>
    : (text: ClipboardItems) => Promise<void>
}
/**
 * 响应式 Clipboard API.
 *
 * @see https://vueuse.org/useClipboardItems
 * @param options
 */
export declare function useClipboardItems(
  options?: UseClipboardItemsOptions<undefined>,
): UseClipboardItemsReturn<false>
export declare function useClipboardItems(
  options: UseClipboardItemsOptions<MaybeRefOrGetter<ClipboardItems>>,
): UseClipboardItemsReturn<true>

Source

SourceDemoDocs

贡献者

丶远方
Anthony Fu
Anthony Fu
Doctorwu

变更日志

v10.6.0 on 11/9/2023
1aa50 - feat: new function (#3477)

Released under the MIT License.