Javascript 使用ReactJS创建打印页面
必须有一种比我现在做的方式更不暴力的方式来制作打印页面。(参见下面的代码)。可能是以某种方式使用ReactJS和DOM插入,因为我网站的其余部分都是用ReactJS编写的?(参见下面的第二个示例)我尝试过使用CSS@media print,但它在所有浏览器风格的非常复杂的网站上都不起作用。最近,我为打印页面创建了一个完全独立的ReactJS网站,然后向它传递查询字符串,以获取打印页面上所需的一些信息。真是一团糟Javascript 使用ReactJS创建打印页面,javascript,reactjs,Javascript,Reactjs,必须有一种比我现在做的方式更不暴力的方式来制作打印页面。(参见下面的代码)。可能是以某种方式使用ReactJS和DOM插入,因为我网站的其余部分都是用ReactJS编写的?(参见下面的第二个示例)我尝试过使用CSS@media print,但它在所有浏览器风格的非常复杂的网站上都不起作用。最近,我为打印页面创建了一个完全独立的ReactJS网站,然后向它传递查询字符串,以获取打印页面上所需的一些信息。真是一团糟 var html: string = '<!DOCTYPE html>
var html: string = '<!DOCTYPE html>';
html += '<html lang="en">';
html += '<head>';
html += '<meta charset="utf-8">';
html += '<title>Title</title>';
html += '</head>';
html += '<body style="background-color: white;">';
html += '<div">';
html += getContent();
html += '</div>';
html += '</body>';
html += '</html>';
var newWin = window.open();
newWin.document.write(html);
newWin.document.close();
是的,结帐
var React=require('React');
var ReactDOM=require('react-dom');
var PrintTemplate=require('react-print');
类MyTemplate扩展了React.Component{
render(){
返回(
打印时显示的所有标记
写下所有你想显示的“HTML”(真正的JSX)
印刷品,在这里
如果需要显示不同的数据,可以获取这些数据
通过组件上的AJAX将/did挂载或作为道具传递
CSS将隐藏原始内容并显示您的
打印模板
)
}
}
render(,document.getElementById('print-mount');
我在@media print打印方法方面运气不太好。似乎一个复杂网站的某些部分总是会显示在打印页面上,但感谢您的建议。如果您仍然需要文档。getElementById('root')
,该怎么办?
var sNew = document.createElement("script");
sNew.async = true;
sNew.src = "Bundle.js?ver=" + Date.now();
var s0 = document.getElementsByTagName('script')[0];
s0.parentNode.insertBefore(sNew, s0);
var React = require('react');
var ReactDOM = require('react-dom');
var PrintTemplate = require ('react-print');
class MyTemplate extends React.Component {
render() {
return (
<PrintTemplate>
<div>
<h3>All markup for showing on print</h3>
<p>Write all of your "HTML" (really JSX) that you want to show
on print, in here</p>
<p>If you need to show different data, you could grab that data
via AJAX on componentWill/DidMount or pass it in as props</p>
<p>The CSS will hide the original content and show what is in your
Print Template.</p>
</div>
</PrintTemplate>
)
}
}
ReactDOM.render(<MyTemplate/>, document.getElementById('print-mount'));