想要获取 html 组件作为图像,但总是 document.querySelector return null

want to get html component as image but always document.querySelector return null

我是新手。 我正在使用 QRcode.react 生成 QR 码,我希望将它添加到 @react-pdf/renderer 以便我可以在 pdf 中附加 QR 码。 因此,为此,我试图将 HTML 作为图像的数据 URL。

下面是我生成图像URL的代码

import React, { Fragment } from "react";

import QRCode from "qrcode.react";

class QRCodeRender extends React.Component {
  componentDidMount() {
    // console.log("im loded");
    const qrCodeCanvas = document.querySelector("target");
    const qrCodeDataUri = qrCodeCanvas.toDataURL("image/jpg", 0.3);
  }

  render() {
    const { cusName, invoice } = this.props;
    console.log("cusName props " + this.props.cusName);
    let data = `Customer : ${cusName} , Invoice : ${invoice}`;
    return (
      <Fragment>
        <div id="target">
          <QRCode level="Q" style={{ width: 60 }} value={data} />
        </div>
      </Fragment>
    );
  }
}

export default QRCodeRender;

问题是我总是进入 document.querySelector Null,所以我无法创建 HTML 的 URL。 我做错了吗?

您想要 select 具有 ID 目标的元素。 但是你选择的是标签目标

你需要解决这个问题

    const qrCodeCanvas = document.querySelector("target");

=>

    const qrCodeCanvas = document.querySelector("#target");

我无法发表评论,但我认为 toDataUrl() 是仅在 <canvas> 个元素上的函数?

https://developer.mozilla.org/de/docs/Web/API/HTMLCanvasElement/toDataURL