Skip to content

剪贴板复制(useCopy)

useCopy 是一个跨平台剪贴板复制 Hook,H5 端优先使用 Clipboard API 并自动降级到 execCommand,小程序端使用 uni API。

此 API 源码:GitHub

使用方式

vue
<template>
  <button @click="copy('要复制的文字')">复制</button>
  <text v-if="isCopying">复制中...</text>
</template>

<script setup>
import { useCopy } from 'see-u-ui'

const { copy, isCopying, lastResult } = useCopy({
  showToast: true,
  toastMessage: '复制成功'
})

// copy() 返回 Promise<boolean>
const handleCopy = async () => {
  const success = await copy('要复制的文字')
  console.log(success ? '复制成功' : '复制失败')
}
</script>

API

useCopy(options?)

参数类型默认值说明
options.showToastbooleantrue复制成功后是否显示提示
options.toastMessagestring'复制成功'成功提示文字
options.toastDurationnumber1500提示显示时长(ms)

返回值:

属性/方法类型说明
copy(text: string) => Promise<boolean>复制文字到剪贴板
isCopyingRef<boolean>是否正在复制(防抖)
lastResultRef<boolean | null>最近一次复制结果

平台差异

  • H5:优先 navigator.clipboard.writeText()(需 HTTPS),降级 document.execCommand('copy')
  • 小程序/App:使用 uni.setClipboardData

辽 ICP 备 2025070134 号