使生成的二维码可在React项目上下载

Sav*_*ndy 1 javascript qr-code download reactjs

我想做的是根据设备 ID 生成二维码以便稍后下载。我弄清楚了如何生成它,它在页面上显示正常,一切正常,但是有没有可能的方法来下载它?(QR 图像,它是 .png)

import QRCode from 'qrcode.react';
render() {
return (
<QRCode value={this.state.values.deviceId} />
)};
Run Code Online (Sandbox Code Playgroud)

这就是我所做的:

图1

这就是我想做的:

在此输入图像描述

Sav*_*ndy 7

我想出了如何做到这一点,这是代码:

import QRCode from 'qrcode.react';
constructor(props) {
    super(props);
this.download = this.download.bind(this);
}
componentDidMount(){
 this.download()
}
render() {
return (
 <div style={{display: "none"}} className="HpQrcode"> // hidden div
   <QRCode
     value={this.state.values._id}
     size={128}
     level={'H'}
   />
 </div>
  <a ref={(ref: any): any => this.downloadRef = ref}>
    Download QR Code
  </a>
)};
download() {
    const canvas: any = document.querySelector('.HpQrcode > canvas');
    this.downloadRef.href = canvas.toDataURL();
    this.downloadRef.download = this.state.values.deviceId + "-QR.png";
}
Run Code Online (Sandbox Code Playgroud)