当前位置: 首页 > news >正文

Vue3 + TypeScript 实现二维码生成与展示


代码实现

<!-- 二维码解析 -->
<script setup lang="ts">
import { ref, onMounted } from 'vue';
import QRCode from 'qrcode';// 定义组件接收的 props
const props = defineProps({url: String, // 要生成二维码的 URL 地址
});// 存储生成的二维码图片数据
const qrCodeUrl = ref<string | null>(null);// 异步生成二维码的方法
const generateQRCode = async () => {try {// 使用 qrcode 库将 URL 转换为 Data URL 格式的二维码图片const dataUrl = await QRCode.toDataURL(props.url.trim());qrCodeUrl.value = dataUrl;} catch (error) {console.error('Error generating QR code:', error);}
};// 在组件挂载后自动调用生成二维码方法
onMounted(() => {generateQRCode();
});
</script><template><div id="QRCode"><!-- 显示生成的二维码图片 --><img :src="qrCodeUrl" style="width: 200px" alt="QR Code" /></div>
</template>

功能详解

1. 安装依赖

在使用 qrcode 库之前,需要先安装它:

npm install qrcode

如果需要类型支持,可以安装对应的类型定义包:

npm install --save-dev @types/qrcode

2. 核心功能解析

2.1 接收 URL 参数

通过 defineProps 定义了一个名为 url 的 prop,用于接收外部传递的 URL 地址。这个地址将作为二维码的内容。

2.2 生成二维码

使用 qrcode 提供的 toDataURL 方法,将传入的 URL 转换为 Base64 编码的 Data URL 图片格式。这个方法是异步的,因此需要用 await.then 处理。

2.3 自动触发生成

在组件挂载完成后,通过 onMounted 生命周期钩子自动调用 generateQRCode 方法,确保二维码在页面加载时自动生成。

2.4 显示二维码

通过 <img> 标签动态绑定 src 属性,将生成的二维码图片显示在页面上。


使用示例

假设父组件传递了一个 URL 参数:

<template><QRCodeGenerator url="https://www.example.com" />
</template><script setup>
import QRCodeGenerator from './QRCodeGenerator.vue';
</script>

运行后,页面会显示一个基于 https://www.example.com 生成的二维码图片。


相关文章:

  • poi生成横向文档以及复杂表头
  • 驱动开发硬核特训 · Day 18:深入理解字符设备驱动与子系统的协作机制(以 i.MX8MP 为例)
  • 欧拉计划 Project Euler54(扑克手牌)题解
  • MySQL运算符
  • stack和queue的学习
  • 【实证分析】ESG发展对企业新质生产力影响的研究—来自中国A股上市企业的经验
  • ROS第十二梯:ros-noetic和Anaconda联合使用
  • Python常用的第三方模块之【pymysql库】操作数据库
  • HarmonyOS 5.0应用开发——MVVM模式的应用
  • CF2103F Maximize Nor
  • AI 人工智能模型:从理论到实践的深度解析⚡YQW · Studio ⚡【Deepseek】【Chat GPT】
  • 深度学习中的黑暗角落:梯度消失与梯度爆炸问题解析
  • springboot+vue 支付宝支付(沙箱方式,测试环境使用)
  • VUE Element-ui Message 消息提示组件自定义封装
  • 如何在编译命令中添加灰度标识
  • cnas认证注意事项,cnas认证审核有效期?cnas认证难吗?
  • 思科路由器密码绕过+重置
  • uniapp小程序使用echarts
  • 湖南大学-操作系统实验四
  • python——模块、包、操作文件
  • 五一假期多地政府食堂对外开放:部分机关食堂饭菜“秒没”
  • 超越梅罗,这样一个亚马尔折射巴萨的容错率
  • 讲座|为什么要不断地翻译叶芝的诗?它们为什么值得细读?
  • 铺就长三角南北“交通动脉”,乍嘉苏改高速扩建项目首桩入位
  • “女乘客遭顺风车深夜丢高速服务区”续:滴滴永久封禁两名涉事司机账号
  • 中青旅:第一季度营业收入约20.54亿元,乌镇景区接待游客数量同比减少6.7%