如何使用Reactjs在新选项卡中将画布作为图像打开

Mul*_*yan 5 javascript reactjs jsbarcode

我目前有一个由JsBarcode的react实现生成的画布条形码,称为react-barcode。目前,我可以右键单击画布,然后在新选项卡中将其作为图像打开。如何通过单击按钮来实现此功能?

我已经检查了这个问题的几个答案,但他们都使用jquery。我正在寻找使用React或纯js的实现。

kem*_*ica 5

使用HTMLCanvasElement#toDataURL

HTMLCanvasElement.toDataURL()方法以type参数指定的格式返回数据URI,该数据URI包含图像的表示形式(默认为PNG)。返回的图像的分辨率为96 dpi。

我认为SO会阻止window.open,但只需复制控制台记录的数据并将其粘贴到新选项卡中。

const canvas = document.getElementById("canvas");
const button = document.getElementById("click");

const context = canvas.getContext("2d");
context.fillStyle = "#FF0000";
context.fillRect(20, 20, 150, 100);

button.addEventListener("click", function(){
  const dataUrl = canvas.toDataURL("png");
  console.log(dataUrl);
  const win = window.open(dataUrl, '_blank');
});
Run Code Online (Sandbox Code Playgroud)
<canvas id="canvas" width="100" height="100"></canvas>
<button id="click">Click</button>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的回答。包括@ChrisG给出的一些摘要。 (2认同)