Javascript 使用ReactJS创建打印页面

Javascript 使用ReactJS创建打印页面,javascript,reactjs,Javascript,Reactjs,必须有一种比我现在做的方式更不暴力的方式来制作打印页面。(参见下面的代码)。可能是以某种方式使用ReactJS和DOM插入,因为我网站的其余部分都是用ReactJS编写的?(参见下面的第二个示例)我尝试过使用CSS@media print,但它在所有浏览器风格的非常复杂的网站上都不起作用。最近,我为打印页面创建了一个完全独立的ReactJS网站,然后向它传递查询字符串,以获取打印页面上所需的一些信息。真是一团糟 var html: string = '<!DOCTYPE html>

必须有一种比我现在做的方式更不暴力的方式来制作打印页面。(参见下面的代码)。可能是以某种方式使用ReactJS和DOM插入,因为我网站的其余部分都是用ReactJS编写的?(参见下面的第二个示例)我尝试过使用CSS@media print,但它在所有浏览器风格的非常复杂的网站上都不起作用。最近,我为打印页面创建了一个完全独立的ReactJS网站,然后向它传递查询字符串,以获取打印页面上所需的一些信息。真是一团糟

  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'));