在react中实现打印功能

最近需要在react项目中实现打印功能,刚开始想到的都是基于window.print(),但是window.print()如果直接打印的话,没有样式.直接将打印内容设置为打印的区域的话,当你取消打印的时候你会发现整个网页都被你要打印的区域占满了,你还得用window.reload()重新加载一下页面,用户交互很不好。

于是用了iframe方式解决,使用户交互更加友好,这个时候就暴露出一个问题,需要打印的内容的样式无法引入到iframe里面去,样式无法引入,样式无法引入,样式无法引入(将样式写成内联样式,这个问题可以得到解决,我的项目不适用)!!!这个样式折磨了我好久,经过查找资料,得到了解决,下面分享下。

使用react-to-print插件:
在项目中引入依赖:
在这里插入图片描述
在项目中引入:
在这里插入图片描述
在项目中使用:
在这里插入图片描述在打印区域用ref获取dom.

然后在组件内调用:
在这里插入图片描述
下面是我测试的效果图:
在这里插入图片描述
这里附上插件github地址:https://github.com/gregnb/react-to-print

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
实现 React打印功能,可以使用浏览器提供的 window.print() 方法。具体实现步骤如下: 1. 在需要打印的页面组件,添加一个按钮或者其他触发打印的元素。 2. 给该元素绑定一个点击事件,事件处理函数调用 window.print() 方法。 3. 在 CSS 样式,针对需要打印的内容,设置 media="print" 的样式。 举个例子,假设有一个名为 PrintButton 的组件,用于触发打印操作,代码如下: ``` import React from 'react'; class PrintButton extends React.Component { handleClick = () => { window.print(); } render() { return ( <button onClick={this.handleClick}>打印</button> ); } } export default PrintButton; ``` 在需要打印的页面组件,引入该组件,并在需要打印的内容上设置 media="print" 的样式,如下所示: ``` import React from 'react'; import PrintButton from './PrintButton'; class PrintPage extends React.Component { render() { return ( <div> <h1>需要打印的内容</h1> <p>这是一段需要打印的文本。</p> <PrintButton /> <style media="print"> /* 打印时的样式 */ body { font-size: 14px; color: #000; } </style> </div> ); } } export default PrintPage; ``` 这样,在点击打印按钮时,就会弹出浏览器的打印对话框,用户可以选择打印机、纸张大小等设置,然后点击打印即可。同时,由于设置了 media="print" 的样式打印出的内容也会按照该样式进行排版和显示。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值