React中如何获取file-saver插件的文件下载状态?
实现file-saver下载PDF时的按钮状态切换
你可以通过React的状态管理来控制下载状态,从而实现按钮文本的切换,具体操作如下:
- 引入
useState钩子定义下载状态变量
import { useState } from 'react'; import { saveAs } from "file-saver"; // 组件内部初始化状态 const [isDownloading, setIsDownloading] = useState(false);
- 修改下载函数,在PDF生成和下载流程中切换状态
用try/finally包裹异步逻辑,确保无论PDF生成成功或失败,状态都能重置,避免按钮一直停留在"下载中"状态:
const GetPDF = async (event) => { event.preventDefault(); // 开始下载,切换状态为"下载中" setIsDownloading(true); try { const blob = await pdf(<DocumentPDF />).toBlob(); saveAs(blob, "custom-court-tool.pdf"); } catch (err) { // 可在此添加错误处理,比如打印错误或提示用户下载失败 console.error('PDF生成/下载失败:', err); } finally { // 下载完成/失败后,重置状态 setIsDownloading(false); } }
- 更新按钮的渲染逻辑
同时建议给按钮添加disabled属性,避免用户重复触发下载:
<button onClick={GetPDF} disabled={isDownloading}> {isDownloading ? "In the process..." : "Download"} </button>
内容的提问来源于stack exchange,提问作者s.kuznetsov
相关产品推荐
相关产品推荐

