javascript - 使用 react-csv 创建和下载后,csv 文件为空
问题描述
我构建了一个小型 React 应用程序,它获取数据并以某种方式对其进行更改,然后将其下载到 csv 文件中。当我下载文件时,csv 是空的。这是我的代码:
const [data, setData] = useState([]);
const downloadBtn = useRef();
useEffect(() => {
if (data.length) {
downloadBtn.current.link.click();
}
}, [data])
const compressData = () => {
const compressedData = [];
// do something with data
setData(compressedData);
}
return(
<button className="btn btn-light btn-outline-secondary" onClick={compressData}>Compress Transactions</button>
<CSVLink
ref={downloadBtn}
className="btn btn-light btn-outline-secondary d-none" // button is hidden
filename="transactions.csv"
data={data}>Compress Transactions</CSVLink>
)
但是如果我将点击放在这样的 setTimeout 中,它会起作用:
setTimeout(() => {
downloadBtn.current.link.click();
}, 1);
我真的很想知道它为什么会发生,也许会听到一个更好的方法来处理它。
解决方案
推荐阅读
- java - 如何在可执行文件中包含带有 pyinstaller 的特定 .jar 文件?
- flask-oauthlib - Authlib - 隐式流
- c++ - 使用向量从c ++中的文件中反转字符串
- prolog - 不确定单例变量警告和未绑定变量错误
- python - Django Admin Inlines 和 AbstractUser
- unity3d - Google Poly 运行时在 iPhone 上占用 1GB RAM
- java - 无法执行目标 org.codehaus.mojo:exec-maven-plugin:1.2.1:exec 错误与 neo4j
- c# - 从一维数组查看 Reportviewer 中的数据表
- vba - 在 VBA 中引用多个“模板”工作表
- php - 创建一个从 mysqli 查询的结果分成两部分的数组