javascript - 提供的元素不在文档中 - Reactjs

标签 javascript reactjs npm html2canvas

我正在尝试将 HTML 发票作为图像发送给用户。

为此目的,我使用 html2canvas 库,但它不断给我错误:

Provided element is not within a Document

这是我在 componentDidMount() 中尝试执行的操作

html2canvas(document.getElementById('invoice'), {
        logging: true,
        profile: true,
        useCORS: true}).then(function(canvas) {
    var data = canvas.toDataURL('image/jpeg', 0.9);
    var src = encodeURI(data);
    console.log(src);
});

并且 invoice 元素确实存在于 DOM 中。

可能出了什么问题?

最佳答案

也许尝试使用 refs 捕获元素.

所以你的组件将如下所示:

class Invoice extends React.Component {
    componentDidMount(){
        html2canvas(this.invoice, {
                logging: true,
                profile: true,
                useCORS: true}).then(function(canvas) {
            var data = canvas.toDataURL('image/jpeg', 0.9);
            var src = encodeURI(data);
            console.log(src);
        });
    }
    render(){
        return <div ref={r => this.invoice = r}>....</div>
    }
}

关于javascript - 提供的元素不在文档中 - Reactjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47834008/

相关文章:

reactjs - 如何在 Material Design React 中禁用波纹

node.js - 与 npm 和 yarn 一起使用的 package.json 脚本?

javascript - 加载本地 ParcelJS 插件

javascript - Angularjs 没有可视化输入选择中的第一个选项

javascript - 如何使用 angularfire 将输入与 firebase 中的用户相关联?

javascript - Jquery切换具有相同ID的图像

javascript - nodeValue 有什么问题吗?

javascript - 如何使用 onClick 获取数组?

node.js - 在Windows环境下运行React应用程序的问题

javascript - 为什么我们在使用 Webpack 时需要 React 和 ReactDOM 作为模块?产生输出需要很长时间