uniapp中使用tki-qrcode生成二维码

前言:用来记录一下自己日常开发遇到的基础东西,参考了很多,如果有重复的地方,可以联系我进行撤稿

一共有两种方法,这两种方法,都有利有弊看自己需求,最好是自己去看看组件作者的那个代码,他最新的代码和我们通过npm直接安装的代码有点细微的差别,可以自己判断使用哪种方法

第一种就是npm下载

npm i tki-qrcode

第二种本地导入,自己创建组件,这样方便你进行二开,比如果我的需求需要预览,然后我就是本地引入的

 

引入组件,在自己的项目代码中,重新创建一个组件,用来做二维码的配置 

<template>
	<view>
		<view class="qrcode-icon">
			 <tki-qrcode
			    ref="qrcode"
			    :cid="cid"
			    :val="codeInfo"
			    :size="size"
			    :unit="unit"
			    :background="background"
			    :foreground="foreground"
			    :pdground="pdground"
			    :icon="icon"
			    :iconSize="iconsize"
			    :lv="lv" 
			    :onval="onval"
			    :loadMake="loadMake"
			    :usingComponents="usingComponents"
			    :showLoading="showLoading"
			    :loadingText="loadingText"
			    @result="qrR"
				@qrCodePreviewImage="qrCodePreviewImage"/>
		</view>
	</view>
</template>

<script>
import tkiQrcode from '../../../components/tki-qrcode/tki-qrcode.vue';
export default {
	components: {
		tkiQrcode
	},
	props:{
		cid:{
			type:String,
			default:"tCode"
		},
		codeInfo:{
			type:String,
			default:""
		}
	},
	data() {
		return {
			size: 150, //二维码的大小
			unit: 'upx', //大小单位 !!! rpx单位有误
			onval: false, //val值变化时自动重新生成二维码
			background: '#ffffff', // 背景色
			foreground: '#000000', // 前景色
			pdground: '#000000', // 角标色
			icon: '', //二维码图标
			iconsize: 30, //二维码图标大小
			lv: 1, //二维码容错级别,默认为3,我的是因为二维码内容过长,不提升等级识别不出来
			loadingText: '加载中', //loading内容
			loadMake:true,    //组件初始化完成后自动生成二维码,val需要有值
			usingComponents:true, //是否使用了自定义组件模式(主要是为了修复非自定义组件模式时 v-if 无法生成二维码的问题)
			showLoading:false,//是否添加loading,全局不是单个,就是屏幕中间的那种
		};
	},
	methods: {
		qrR(e) {
			// console.log('生成的图片base64或图片临时地址', e);
		},
		// 控制预览情况
		qrCodePreviewImage(val){
			this.$emit('previewImage',val)
		},
	}
};
</script>

<style>

	
</style>

 然后就是在你要生成二维码的地方进行使用

<TKIQrcode :cid='`${list.id}`' :codeInfo="`${list.deviceNo}`" @previewImage="previewImage"></TKIQrcode>
import TKIQrcode from './TKIQrcode.vue';

在使用的时候需要注意几个地方,第一个就是那个showLoading属性,因为二维码生成需要一个过程,所以如果没有这个loading就会显得有点空,但是这个loading,我使用的时候他是在屏幕的正中间,但是我的又是列表,就会影响到整个界面的显示,我就给关掉了,虽然刚开始会不好看,毕竟不能影响到主要功能,后面会想到怎么优化,暂时关掉,再就是你们可能会遇到一个报错

[渲染层错误] Uncaught TypeError: this._getData is not a function(env: Windows,mp,1.06.2306020; lib: 2.33.0)

 这个错误,我暂时的解决的办法是需要调整你的小程序开发者工具的调试基础库版本,低版本就会报这个错,具体为啥,暂时没有去研究,插个眼

大体上就是这么搞,当然肯定也会有各种小问题,各位谨慎使用,提一句就是预览的时候会做那个刷新,这个别忘了,反正我是加了一个属性,来控制时候刷新,肯定也有其他的办法,这个我就不分享了,毕竟我不能确保没有问题 

注:总的来说就是还是没有具体的研究透,毕竟老板催的比较急,只是临时做了一下记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值