Vue3 实现二维码功能

62 阅读1分钟

一、依赖参考

pnpm i vue-qr

二、组件封装

<template>
  <VueQr class="qrcode" :text :size :margin :logoSrc="icon" :colorDark="color" :backgroundColor="bgColor" />
</template>

<script setup lang="ts">
defineOptions({ name: 'QRCode' })
import VueQr from 'vue-qr/src/packages/vue-qr.vue'

defineProps({
  /** 二维码内容 必需 */
  text: { type: String, required: true },
  /** 嵌入至二维码中心的 LOGO 地址 */
  icon: { type: String, default: '' },
  /** 二维码图像的外边距, 默认 0px */
  margin: { type: Number, default: 0 },
  /** 尺寸, 长宽一致, 包含外边距 */
  size: { type: Number, default: 150 },
  /** 二维码颜色 */
  color: { type: String, default: '#000' },
  /** 二维码背景颜色 */
  bgColor: { type: String, default: 'transparent' },
})
</script>

<style lang="scss" scoped>
.qrcode:hover {
  cursor: pointer;
}
</style>

三、使用案例

<template>
	<button @click="donwloadQrCode">下载</button>
  <QrCode text="安能摧眉折腰事权贵,使我不得开心颜?" ref="qrcodeRef" />
</template>

<script setup lang="ts">
// import QrCode from '@/components/QrCode/index.vue'
import { type GlobalComponents } from 'vue'

/** 二维码组件实例 */
// const qrcodeRef = ref<InstanceType<typeof QrCode>>()
const qrcodeRef = ref<InstanceType<GlobalComponents['QRCode']>>()

function donwloadQrCode() {
  // 获取二维码图片的 base64 链接
  console.log(qrcodeRef.value?.$el.src)
}
</script>

四、参考文献