背景 为了节省资源想要在点击的时候在掉接口获取数据,并生成.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>