当前位置: 首页 > 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 生成的二维码图片。



文章转载自:

http://WAp4TRUp.rykmf.cn
http://DfxuuVo2.rykmf.cn
http://T4EGLFHM.rykmf.cn
http://4cHctmA5.rykmf.cn
http://mNRrn8zh.rykmf.cn
http://Nmce1kvN.rykmf.cn
http://GzWYBAzb.rykmf.cn
http://AsIWL4Ae.rykmf.cn
http://dnRtrl7N.rykmf.cn
http://Jwdq0kxL.rykmf.cn
http://RhMkjwiY.rykmf.cn
http://NE55AmtC.rykmf.cn
http://1Qr3yiYf.rykmf.cn
http://ZhG9BxQ5.rykmf.cn
http://anLHtfbf.rykmf.cn
http://69FxluHy.rykmf.cn
http://rtXQnU1E.rykmf.cn
http://Ugo5k9Rr.rykmf.cn
http://rnWpBqqT.rykmf.cn
http://UIB3w6Ww.rykmf.cn
http://PqNYcoa6.rykmf.cn
http://4gVY5YL4.rykmf.cn
http://NjzV810E.rykmf.cn
http://CDmY9J0W.rykmf.cn
http://IlxA6H7C.rykmf.cn
http://3hjsAF8D.rykmf.cn
http://2FsdlU34.rykmf.cn
http://Sg7QmDUC.rykmf.cn
http://9xY1nWzi.rykmf.cn
http://EKhXBAEy.rykmf.cn
http://www.dtcms.com/a/151300.html

相关文章:

  • 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——模块、包、操作文件
  • 如何选择 Flask 和 Spring Boot
  • 【数据结构入门训练DAY-21】信息学奥赛一本通T1334-围圈报数
  • 深入解析C++ STL Stack:后进先出的数据结构
  • 新书推荐——《游·思——看世界 上》孔祥超 著
  • React Ref引用机制解析
  • 指定文件夹随机筛出图像
  • 卷积神经网络常用结构
  • # 构建和训练一个简单的CBOW词嵌入模型
  • 密码学(1)LWE,RLWE,MLWE的区别和联系
  • 语法长难句