uni-app用qrcodejs2生成二维码

本文介绍了在uni-app中如何使用qrcodejs2库生成二维码,重点讲解了在组件内生成二维码时需要注意的渲染顺序问题,以及如何通过this.$refs获取
元素并确保其渲染完成后再生成二维码,避免出现空白情况的解决办法。
摘要由CSDN通过智能技术生成

在package.json文件导入"qrcodejs2": "0.0.2"

<template>
	<view class="businessPay">
		<action-bar style="width: 100%;" title="确认支付" leftIcon="back"></action-bar>

		<!-- <uni-section title="预存现金" type="line"></uni-section> -->
		<!-- <cash-advance ref="cashAdvance"></cash-advance> -->

		<!-- <uni-section title="支付方式" type="line"></uni-section> -->
		<!-- <pay-way ref="payWay"></pay-way> -->

		<view class="msgBox">
			<common-msg-item title="订单金额" :content="payAmount"></common-msg-item>
			<PickMsgItem title="支付方式" :range="payWay" rangeKey="mname" iconfont="&#xe634;" @onPick="onPercombPick">
			</PickMsgItem>
			<view>
				<uni-popup ref="popup" type="center" :mask-click="false">
					<uni-card>
						<view v-if="isShowModal">
							<!-- <view style="width: 450upx;height: 500upx;margin-top: 10px"> -->
								<view class="qrcode">
									<!-- <canvas style="width: 450upx;height: 500upx;" canvas-id="couponQrcode"></canvas> -->
									<div id="qrCode" ref="qrCodeDiv"></div>
								</view>
							<!-- </view> -->
							<view class="title" style="margin-top: 10px;font-weight:bold">
								扫码二维码支付
							</view>
						</view>
					</uni-card>
				</uni-popup>
			</view>
		</view>

		<view class="businessPay-btn">
			<view class="btn" @click="businessPay()">
				立即支付
			</view>
		</view>

		<web-view v-if="webViewSrc" :src="webViewSrc"></web-view>
	</view>
</template>

import QRCode from 'qrcodejs2';
            businessPay(){
                this.couponQrCode();
            },

// 二维码生成工具
			couponQrCode() {
				// new qrCode('couponQrcode', {
				// 	text: this.qrCodeValue,
				// 	width: 200,
				// 	height: 225,
				// 	colorDark: "#333333",
				// 	colorLight: "#FFFFFF",
				// 	correctLevel: qrCode.CorrectLevel.H
				// })
                // 这里打开生成二维码的时候,需要多一层判断body主体渲染完后,才能获取this.$refs.qrCodeDiv这个div拿来渲染,不然会导致无法获取div标签到时无法渲染成功,二维码为空白的情况
				const el = this.$refs.qrCodeDiv
				if(!el) {
					setTimeout(() => {
                        // 进行回调二维码生成工具方法
						this.couponQrCode()
					}, 300)
				}
				this.$nextTick(() => {
					new QRCode(this.$refs.qrCodeDiv, {
						text: this.qrCodeValue,
						width: 220,
						height: 245,
						colorDark: "#333333", //二维码颜色
						colorLight: "#ffffff", //二维码背景色
						correctLevel: QRCode.CorrectLevel.L//容错率,L/M/H
					  })
				})
			},

这里的couponQrCode()方法需要用到this.$refs.qrCodeDiv,去判断<div>标签是否生成成功。不然会出现二维码生成空白的情况,这里需要注意的点是<div>的是<uni-popup>标签里面的,要<uni-popup>先生成渲染完,才会到<div>去渲染二维码。这里需要注意一下先后顺序,如果没有获取就延迟再重新获取div标签去生成二维码。----这里也算是一个坑

.businessPay {
		width: 100%;
		overflow: hidden;
		box-sizing: border-box;

		view {
			box-sizing: border-box;
		}

		.msgBox {
			width: 100%;
			background-color: #fff;
			padding: 30rpx 40rpx;
		}

		&-btn {
			width: 100%;
			overflow: hidden;
			padding: 40rpx 20rpx;

			.btn {
				width: 100%;
				overflow: hidden;
				color: #fff;
				font-size: 28rpx;
				background-color: #1F77FF;
				line-height: 100rpx;
				height: 100rpx;
				border-radius: 50rpx;
				text-align: center;
			}
		}
	}
	.qrcode {
		padding: 50 upx 0 20 upx 0;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.title {
		text-align: center;
	}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uni-app生成二维码可以使用第三方库qrcode.js。以下是生成二维码的步骤: 1. 首先,通过npm将qrcode.js安装到你的uni-app项目中。打开命令行工具,切换到你的项目根目录下,执行以下命令: ```shell npm install qrcode.js --save ``` 2. 在需要生成二维码的页面中引入qrcode.js。打开你需要使用的页面的vue文件,添加以下代码: ```javascript import QRCode from 'qrcodejs2' export default { mounted() { // 在mounted钩子函数中调用生成二维码的方法 this.generateQRCode() }, methods: { generateQRCode() { // 获取二维码容器DOM元素 const qrcodeContainer = this.$refs.qrcodeContainer // 创建一个qrcode实例 const qrcode = new QRCode(qrcodeContainer, { text: 'https://www.csdn.net', // 二维码的内容 width: 200, // 二维码的宽度 height: 200 // 二维码的高度 }) // 或者你也可以通过动态数据传递给二维码的内容 // const qrcode = new QRCode(qrcodeContainer, { // text: this.dynamicData, // width: 200, // height: 200 // }) // 可以根据需要自定义二维码的样式 qrcodeContainer.children[0].style.margin = '10px' } } } ``` 3. 在页面的模板中添加一个用于渲染二维码的容器。在你的页面模板中,添加以下代码: ```html <template> <view> <canvas ref="qrcodeContainer"></canvas> </view> </template> ``` 这样,当你访问该页面时,就会生成一个指定内容的二维码并渲染在页面上。 以上就是在uni-app生成二维码的方法,希望能帮到你!如果有更多问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值