Я пытаюсь создать QR код на основе идентификатора устройства, чтобы позже загрузить его. Я понял, как его сгенерировать, на странице отображается ОК, все в порядке, но есть ли способ его скачать? (QR-изображение, это .png)
import QRCode from 'qrcode.react';
render() {
return (
<QRCode value = {this.state.values.deviceId} />
)};
Вот что я сделал:
Вот что я хочу сделать:



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Взгляните на FileSaver.js, он может создавать файлы из холста.
Я не могу понять, как это сделать с FileSaver
Создает холст или img? Если img, тогда получите элемент кода qr после того, как он был отрисован с использованием предоставленного вами идентификатора, затем используйте его src / img ref, а затем создайте и ссылку с ним в качестве ссылки
Он создает холст, я буду пытаться разобраться, опубликую ответ
Эта ссылка вообще помогает? github.com/zpao/qrcode.react/issues/37
Я понял, как это сделать, вот код:
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";
}
Нашел самый простой способ скачать qr код здесь
Эта библиотека генерирует QR-коды на холсте, поэтому поиск вопросов об экспорте холста в виде изображения может быть полезным - я бы порекомендовал связать библиотеки 'canvas-to-blob' и 'file-saver' вместе в npm.