react-to-print 打印

16 篇文章 0 订阅
1 下载

npm install --save react-to-print

2 引用

import ReactToPrint from 'react-to-print';

3 调用
 //触发按钮
<ReactToPrint
    trigger={() => <a href="#">点此打印</a>}
    content={() => this.ref}
/>
//打印内容
<div ref={el => (this.ref = el)}>
     ....内容
<div/>

注意:trilgger返回的组件上添加onClick属性是不会触发事件的。所以需要打印的内容先添加到ref中,再点击“打印”才能在浏览器的打印预览中看到内容。
想要点击之后再将指定内容塞到div中,是得不到预期结果的。

此时,可以使用一个弹窗,将需要打印的内容先显示在弹窗内,弹窗的确定键改为打印键即可。
我用的是antd的Modal

<Modal title="打印" visible={isModalVisible}
    footer={<ReactToPrint
        trigger={() => <Button>打印</Button>}
        content={() => this.refs}
        onAfterPrint={handleCancel} // 打印后触发的回调功能,关闭弹窗
    />}
    onCancel={handleCancel}>
    //获取到的打印内容
</Modal>

至于onBeforeGetContent属性,虽然是在库收集页面内容之前触发的回调函数(点击打印就能触发),但是吧,我把需要打印的内容放在state中,onBeforeGetContent的回调函数修改state,打印预览上并没有显示出修改内容,就,,放弃了


4 参数

该组件接受以下参数(注意:?表示可选参数):

名称类型描述
triggerfunction返回React组件或HTML元素的函数
contentfunction返回组件参考值的函数。然后将该参考值的内容用于打印
copyStylesboolean?将所有< style>和< link type=“stylesheet” />标签从< head>父窗口内部复制到打印窗口。(默认值:true)
onBeforeGetContentfunction?在库收集页面内容之前触发的回调函数。返回void或Promise。可用于在打印之前更改页面上的内容。
onBeforePrintfunction?打印前触发的回调功能。返回void或Promise。注意:此功能在打印之前立即运行,但在收集页面内容之后才运行。要在打印之前修改内容,请onBeforeGetContent改用。
onAfterPrintfunction?打印后触发的回调功能
onPrintErrorfunction(errorLocation: string, error: Error)?如果打印错误严重到无法继续打印,将调用的回调函数。目前仅限于onBeforeGetContent或中的Promise拒绝onBeforePrint。使用它尝试再次打印。errorLocation会告诉您Promise在哪个回调中被拒绝。
removeAfterPrintboolean?执行操作后,卸下打印iframe。默认为false。
pageStylestring?覆盖默认的打印窗口样式
bodyClassstring?传递给打印窗口主体的类

参考:https://segmentfault.com/a/1190000020680416

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
React-to-print 是一个 React 库,用于将 React 组件打印为 PDF 或者 HTML。 使用该库需要两个步骤: 1. 安装 react-to-print 使用 npm 或 yarn 安装 react-to-print: ``` npm install react-to-print ``` 或者 ``` yarn add react-to-print ``` 2. 创建一个可打印的组件 创建一个可打印的组件,该组件应该包含需要打印的内容。这个组件必须是一个类组件。 例如: ```jsx import React from 'react'; class PrintableComponent extends React.Component { render() { return ( <div> <h1>Hello World</h1> <p>This is a printable component.</p> </div> ); } } export default PrintableComponent; ``` 3. 在需要打印的组件中使用 react-to-print 在需要打印的组件中使用 react-to-print,将可打印的组件作为参数传入。 例如: ```jsx import React from 'react'; import ReactToPrint from 'react-to-print'; import PrintableComponent from './PrintableComponent'; class MyComponent extends React.Component { render() { return ( <div> <h1>My Component</h1> <ReactToPrint trigger={() => <button>Print</button>} content={() => this.componentRef} /> <PrintableComponent ref={el => (this.componentRef = el)} /> </div> ); } } export default MyComponent; ``` 在上面的例子中,我们在需要打印的组件中使用了 ReactToPrint 组件。该组件接受两个属性: - trigger:触发打印的元素,这里我们使用了一个按钮。 - content:要打印的内容,这里我们使用了 PrintableComponent,并将其 ref 传递给了 this.componentRef。 现在,当用户点击打印按钮时,PrintableComponent 组件将被打印

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值