最近在开发react项目中使用到了打印功能
1、使用react-to-print插件(npm自行安装)
import React from 'react';
import ReactToPrint from 'react-to-print';
import ComponentToPrint from "srcDir/pages/internalNanjing/summaryStatistics/ComponentToPrint.js";
class Example extends React.Component {
render() {
return (
<div>
<ReactToPrint
trigger={() => <a href="#">Print this out!</a>}
content={() => this.componentRef}
/>
<ComponentToPrint ref={el => (this.componentRef = el)} />
</div>
);
}
}
// 子组件
class ComponentToPrint extends React.Component {
constructor (props) {
super(props);
this.state = {
branchNameArr: [], // 网点列表
};
this.printRef = React.createRef();
}
componentDidMount () {
Request.GET(`${host}/branch-banks/get-net-list`).then((res) => {
this.setState({
branchNameArr: res
});
});
}
render() {
return (
<div className="print">
<main ref={this.printRef}>
<table>
<thead>
<th>column 1</th>
<th>column 2</th>
<th>column 3</th>
</thead>
<tbody>
<tr>
<td>data 1</td>
<td>data 2</td>
<td>data 3</td>
</tr>
<tr>
<td>data 1</td>
<td>data 2</td>
<td>data 3</td>
</tr>
<tr>
<td>data 1</td>
<td>data 2</td>
<td>data 3</td>
</tr>
</tbody>
</table>
</main>
</div>
);
}
}
不过该插件在windows系统打印,有的机器不显示页码
2.使用原始js打印
import React from 'react';
import ComponentToPrint from "srcDir/pages/internalNanjing/summaryStatistics/ComponentToPrint.js";
class Example extends React.Component {
constructor (props) {
super(props);
this.state = {
printType: 1,
};
}
// 原生打印
printPartFn = () => {
const old = window.document.body.innerHTML;
const printPart = document.querySelector(".print");
window.document.body.innerHTML = "";
window.document.body.appendChild(printPart);
window.print();
window.document.body.innerHTML = old;
window.location.reload();
};
render() {
return (
<div>
<Button
onClick={() => {
this.printPartFn();
}}
>打印
</Button>
<ComponentToPrint ref={el => (this.componentRef = el)} />
</div>
);
}
}
// 子组件
class ComponentToPrint extends React.Component {
constructor (props) {
super(props);
this.state = {
branchNameArr: [], // 网点列表
};
this.printRef = React.createRef();
}
componentDidMount () {
Request.GET(`${host}/branch-banks/get-net-list`).then((res) => {
this.setState({
branchNameArr: res
});
});
}
render() {
return (
<div className="print">
<main ref={this.printRef}>
<table>
<thead>
<th>column 1</th>
<th>column 2</th>
<th>column 3</th>
</thead>
<tbody>
<tr>
<td>data 1</td>
<td>data 2</td>
<td>data 3</td>
</tr>
<tr>
<td>data 1</td>
<td>data 2</td>
<td>data 3</td>
</tr>
<tr>
<td>data 1</td>
<td>data 2</td>
<td>data 3</td>
</tr>
</tbody>
</table>
</main>
</div>
);
}
}
版权声明:本文为yufengaotian原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。