react-csv CSVLink组件使用线程问题解决记录

本文讲述了在使用React组件`react-csv`实现数据导出时,如何避免点击按钮多次触发接口导致数据重复的问题。作者通过将CSV链接的点击操作放在setTimeout函数中解决了首次加载为空和重复导出的问题。
摘要由CSDN通过智能技术生成

背景 为了节省资源想要在点击的时候在掉接口获取数据,并生成.csv文件
问题 点击调用接口打印出来的总是上一次数据,首次下载总是空白
解决方法 直接上代码

	import { CSVLink } from "react-csv";
	
	const csvLink = useRef<any>();
	// 导出数据
	const [exportValue, setExportValue] = useState<any>([]);
	
 	const fetchExport = async (params: any) => {
    // 导出方法
    setExportValue(
      await fetchCSVDataObject({
        columns: getTransferDetailColumns(bizTypeOptions),
        api: getDocItemList,
        params,
      }),
    );
    // **关键代码** setTimeout包裹csvLink.current?.link.click 放在任务队列尾部执行
    setTimeout(() => {
      // 此处才是真正的导出文件点击
      csvLink.current?.link.click();
    });
  };	
    /*<--此处名为省略线-->*/        
      <CSVLink
        data={exportValue}
        filename="filename.csv"
        ref={csvLink}
      >
        <Button
          icon={<UploadOutlined />}
          onClick={(event) => {
           // 阻止默认事件,防止单击打印出来两个文件,此处仅是按钮点击
            event.preventDefault();
            fetchExport(paramsValue);
          }}
        >
          导出
        </Button>
      </CSVLink>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值