javascript - 在 react-csv 中下载 CSV 后调用函数

标签 javascript reactjs onclick

我正在使用 react-csv 下载 CSV 文件。它正在按需工作。

但是,我想在下载 CSV 文件后调用另一个函数。这可能吗?

到目前为止,这是我尝试这样做的方式:

{
    finalXerodata && 
    <CSVLink
        data={finalXerodata}
        onClick={() => { console.log("Clicked!"); //this doesnt work }}
        disabled={(finalXerodata.length < 1)}
        headers={xeroColumns}
        filename="data.csv"
        className="ant-btn ant-btn-primary"
        style={{marginLeft: '20px'}}>Download CSV               
    </CSVLink>
}

https://www.npmjs.com/package/react-csv

官方文档说 onClick 事件可用,但在这种情况下似乎不起作用。

谢谢

最佳答案

react-csv使用 Vanilla <a>标记以提供下载链接。下载开始后,它会在后台运行,与文档分开。无法检测下载何时完成。

onClick支持 CSVLink组件将在下载对话窗口打开之前运行。您仍然可以使用它来触发事件,但您无法确保用户成功下载文件。

点击 CSVLink组件似乎出于某种原因劫持了浏览器的控制台输出。这种行为可能会让您误以为 onClick如果您使用控制台日志记录测试它,prop 将不起作用。

关于如何继续,您有两个选择:

1:扩展CSVLink组件

您可以替换 <a>使用更智能的下载组件标记,可以跟踪下载。看来你可以通过只替换 render 来实现这一点方法 https://github.com/react-csv/react-csv/blob/master/src/components/Link.js .这种方法可能会占用大量开发人员时间。

2:依赖用户输入

您可以使用 onClick 检测下载的开始.然后,当用户再次与应用程序交互时,您可以推断下载已完成(或至少下载对话框已关闭)。

您应该做什么取决于您要实现的目标以及您希望对用户体验进行多大程度的控制。

关于javascript - 在 react-csv 中下载 CSV 后调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943045/

相关文章:

javascript - 好的或坏的主意 : load database as a separate . js 文件

javascript - 使用 styled-components 防止组件重新渲染

reactjs - 通过在 React.js 中传递值使字体粗细加粗

reactjs - 处理主机应用程序中的模块联合失败

JavaScript-onclick

android - MediaPlayer.OnCompletionListener 和 View.OnClickListener?

javascript - 键盘上下箭头用于增加减少值

javascript - JS SweetAlert2 无法在 Safari 浏览器中工作

javascript - 如何将属性传递给选项卡导航器内的 react-native 组件?

javascript - 表单按钮打开新页面 onclick