起因

今天在写一个项目的时候使用到了clipboard但是发现网上的教程好像都是vue2的。所以查了一下github这里记录一下Vue3 使用 clipboard。

Install

  1. npm install --save @soerenmartius/vue3-clipboard

使用

在全局中使用 v-clipboard

src/main.js 或 src/main.ts

  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import { VueClipboard } from '@soerenmartius/vue3-clipboard'
  4. createApp(App).use(VueClipboard).mount('#app')

列子

在按钮上使用 v-clipboard

  1. <template>
  2. <input v-model="value" />
  3. <button v-clipboard="value">Copy</button>
  4. </template>
  5. <script lang="ts">
  6. import { defineComponent, ref } from 'vue'
  7. export default defineComponent({
  8. setup() {
  9. const value = ref('lorem')
  10. return { value }
  11. },
  12. })
  13. </script>

复制成功事件和失败事件

  1. <template>
  2. <input v-model="value" />
  3. <button
  4. v-clipboard:copy="value"
  5. v-clipboard:success="onSuccess"
  6. v-clipboard:error="onError"
  7. >
  8. Copy
  9. </button>
  10. </template>
  11. <script lang="ts">
  12. import { defineComponent, ref } from 'vue'
  13. export default defineComponent({
  14. setup() {
  15. const value = ref('lorem')
  16. const onSuccess = () => {
  17. console.log('success')
  18. }
  19. const onError = () => {
  20. console.log('error')
  21. }
  22. return { value, onSuccess, onError }
  23. },
  24. })
  25. </script>

独立使用toClipboard

  1. <template>
  2. <input v-model="value" />
  3. <button @click="toClipboard(value)">Copy</button>
  4. </template>
  5. <script lang="ts">
  6. import { defineComponent, ref } from 'vue'
  7. import { toClipboard } from '@soerenmartius/vue3-clipboard'
  8. export default defineComponent({
  9. setup() {
  10. const value = ref('lorem')
  11. return { value, toClipboard }
  12. },
  13. })
  14. </script>