当前位置: 首页 > 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://www.xdnf.cn/news/103375.html

相关文章:

  • 开源AI客户端Cherry Studio本地化部署自建大模型服务在线平台
  • HTML+CSS对角背景变色
  • es-存储与搜索优化
  • 网络编程——通信三要素
  • 文档构建:Sphinx全面使用指南 — 强化篇
  • 常见基础电能
  • docker部署seafile修改默认端口并安装配置onlyoffice实现在线编辑
  • Shader CGInculde(六)
  • 关于日期的一些计算
  • 0-1背包的运算规则
  • 《重塑AI应用架构》系列: Serverless与MCP融合创新,构建AI应用全新智能中枢
  • (09)Vue脚手架的使用(Vite、vue-cli、create-vue)
  • 利用Python爬虫实现百度图片搜索的PNG图片下载
  • C++ 中 std::thread 的高级应用
  • [实战]zynq7000设备树自动导出GPIO
  • 基于 Spring Boot 瑞吉外卖系统开发(六)
  • ElasticSearch深入解析(三):Elasticsearch 7的安装与配置、Kibana安装
  • spark和Hadoop之间的对比与联系
  • 确保电力作业安全:安全工器具的检查与使用指南
  • 比较:AWS VPC peering与 AWS Transit Gateway
  • 云原生后端架构:重塑后端开发的新范式
  • Linux服务器:在ufw防火墙设置这套规则sudo ufw allow from 172.0.0.0/8,为什么容器就可以访问宿主机的服务了?
  • ReAct Agent 实战:基于DeepSeek从0到1实现大模型Agent的探索模式
  • leetcode-哈希表
  • 容器修仙传 我的灵根是Pod 第8章 护山大阵(DaemonSet)
  • React-实现切换tab高亮显示和排序
  • 【Python爬虫详解】第四篇:使用解析库提取网页数据——BeautifuSoup
  • 240423 leetcode exercises
  • 【Java】HQL查询初步
  • AI健康小屋:解锁健康管理新密码