跳到内容

useClipboardItems

类别
导出大小
939 B
最近更改
5 天前
相关

响应式 剪贴板 API。 提供响应剪贴板命令(剪切、复制和粘贴)以及异步读取和写入系统剪贴板的能力。 访问剪贴板内容受 权限 API 的限制。 未经用户许可,不允许读取或更改剪贴板内容。

演示

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

useClipboard 的区别

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

用法

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

const mime = 'text/plain'
const source = ref([
  new ClipboardItem({
    [mime]: new Blob(['plain text'], { type: mime }),
  })
])

const { content, copy, copied, isSupported } = useClipboardItems({ source })
vue
<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>{{ content || 'none' }}</code>
    </p>
  </div>
  <p v-else>
    Your browser does not support Clipboard API
  </p>
</template>

类型声明

typescript
export interface UseClipboardItemsOptions<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
}
export interface UseClipboardItemsReturn<Optional> {
  isSupported: ComputedRef<boolean>
  content: ComputedRef<ClipboardItems>
  copied: ComputedRef<boolean>
  copy: Optional extends true
    ? (content?: ClipboardItems) => Promise<void>
    : (text: ClipboardItems) => Promise<void>
}
/**
 * Reactive Clipboard API.
 *
 * @see https://vueuse.org.cn/useClipboardItems
 * @param options
 */
export declare function useClipboardItems(
  options?: UseClipboardItemsOptions<undefined>,
): UseClipboardItemsReturn<false>
export declare function useClipboardItems(
  options: UseClipboardItemsOptions<MaybeRefOrGetter<ClipboardItems>>,
): UseClipboardItemsReturn<true>

源代码

源代码演示文档

贡献者

Anthony Fu
Anthony Fu
IlyaL
Robin
Fernando Fernández
Alex Liu
Indrek Ardel
Shang Chien
Naoki Haba
Doctorwu

更新日志

v12.8.0 于 2025/3/5
7432f - feat(types): 弃用 MaybeRefMaybeRefOrGetter,转而使用 Vue 原生方法 (#4636)
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.6.0 于 2023/11/9
1aa50 - feat: 新函数 (#3477)

在 MIT 许可证下发布。