vue中使用qrcodejs2生成二维码

18,016 阅读2分钟

在vue中使用qrcodejs2生成二维码

安装

npm install qrcodejs2 --save

使用

需要使用的地方直接引用

import QRCode from 'qrcodejs2

注意:这个库生成二维码的时候,如果文本长度在215左右就会报错
// 在弹出框使用
<template>
  <div style="margin:0 auto">
    <el-button type="text" @click="open">点击打开 Dialog</el-button>

    <el-dialog :visible.sync="dialogVisible" width="30%">
      <div id="root" ref="qrCodeUrl"></div>
    </el-dialog>
  </div>
</template>

<script>
import QRCode from "qrcodejs2";
export default {
  name: "",
  components: {},
  data() {
    return {
      qrcode: null,
      dialogVisible: false,
      qrcodeStatus: true
    };
  },
  created() {},
  mounted() {},
  methods: {
    open() {
      this.dialogVisible = true;
      this.creatQrCode();
    },
    creatQrCode() {
      this.qrcode = new QRCode(this.$refs.qrCodeUrl, {
        text: "https://www.baidu.com/", // 需要转换为二维码的内容
        width: 100,
        height: 100,
        colorDark: "#000000",
        colorLight: "#ffffff",
        correctLevel: QRCode.CorrectLevel.H
      });
    }
  }
};
</script>
<style scoped></style>

出现错误

qr.png

报错原因:是没有获取到节点,在creatQrCode中加入$nextTick


creatQrCode(){
     this.$nextTick(() => {
     .......
     }
}

现在我们会发现,弹出框打开关闭,打开关闭.....会出现这样的情况

qr1.png

在第二次打开的时候没有去清除上一次保存的二维码,需要先清除上一次二维码

qrcode.clear();
或者
this.$refs.qrCodeUrl.innerHTML = "";

温馨提示:可以给单个二维码加css样式进行优化

qr39.png 渲染结构如图; 可以看到是在获取节点的标签(root)下,出现canvas标签,紧跟一个img标签,

没有效果写法
img{
  width: 150px;
  height: 150px;
}

有效
/deep/ img{
......
}


这里还可以使用获取到root下的所有img标签

let imgs = document.querySelectorAll('.root > img')// 获取到是类数组
imgs.forEach(e=>{
    e.style.width = '150px'
})

参数API

QRCode参数

new QRCode(element, option)

名称默认值说明
element-承载二维码的DOM元素的ID
option-参数设置

Option参数

名称默认值说明备注
text-二维码承载的信息如果是string那没有什么好说的。 如果是url的话,为了微信和QQ可以识别,连接中的中文使用encodeURIComponent进行编码
width256二维码宽度单位像素(百分比不行)
height256二维码高度单位像素(百分比不行)
colorDark'#000000'二维码前景色英文\十六进制\rgb\rgba\transparent都可以
colorLight'#ffffff'二维码背景色英文\十六进制\rgb\rgba\transparent都可以
correctLevelQRCode.CorrectLevel.L容错级别由低到高 QRCode.CorrectLevel.L QRCode.CorrectLevel.M QRCode.CorrectLevel.Q QRCode.CorrectLevel.H

API接口

名称参数说明使用
clear-清除二维码qrcode.clear()
makeCodestring替换二维码(参数里面是新的二维码内容)qrcode.makeCode('new content')

结尾

插件git地址 github.com/davidshimjs…

上述代码使用 elementUIvue

@2021-11-23——《vue中使用qrcodejs2生成二维码》

©Mr. Tang----陌璃哥哥