javascript - 使用 dom-to-image 库下载时排除元素
问题描述
我正在使用dom-to-image库将组件下载为 png 图像。但是我希望从下载的图像中排除一些元素,例如关闭按钮等
我尝试使用这种方法,设置可见的真/假并用 CSS 隐藏它:
const [visible, setVisible] = React.useState(true);
const closeClassName = classNames(classes.visible, {
[classes.hidden]: visible === false,
});
const downloadTemperaturesGraph = React.useCallback(() => {
if (chartRef.current) {
setVisible(false);
domtoimage.toBlob(chartRef.current, { bgcolor: 'white' }).then((blob) => {
fileDownload(blob, `${title}.png`);
});
setTimeout(() => {
setVisible(true);
});
}
}, [chartRef, title]);
有没有更好的方法呢?这可以通过库的过滤器选项来完成吗?
解决方案
可以使用过滤器选项来完成:
const closeRef = React.useRef<HTMLDivElement>(null);
const downloadTemperaturesGraph = React.useCallback(() => {
if (chartRef.current) {
domtoimage
.toBlob(chartRef.current, {
bgcolor: 'white',
filter: (node: Node) => node !== closeRef.current,
})
.then((blob) => {
fileDownload(blob, `${title}.png`);
});
}
}, [chartRef, title]);
推荐阅读
- r - 将 000 转换为 K
- java - 如何从 viewHolder 中的 Asynctask 获取结果?
- java - 从对象列表中获取最大值
- angular - 角度测试 - 表单输入 type="number" 应该只接受数字
- python - 尝试通过 key 从 request.form 获取值时出现 exceptions.badrequestkeyerror(key)
- php - Laravel 6 - 控制器中的更新功能运行但模型未传递给控制器
- asp.net - ASP.NET 突然想要一个斜杠
- mongodb - 如何在猫鼬中检查日期是否小于今天的日期?
- eclipse - Log4J2 - 从 Eclipse 运行时不发生日志记录
- kubernetes - 如何将 n 个不同的配置分配给 n 个 pod