You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中Material Table添加点击事件实现文件下载报错求解

错误根因

你触发报错的核心原因是actions配置中onClick回调直接引用的file是表格绑定的整个数据集数组,而非当前点击行对应的单条文件对象,因此file.name取值为undefined,拼接后的请求URL携带undefined,后端无法找到对应路径就抛出了ENOENT错误。
另外可额外检查:你定义的文件数据集变量名为files(数组),但表格data属性绑定的是file,如果是变量名笔误也需要先修正对应绑定关系。

正确实现方式

Material Table的actions.onClick回调默认提供两个入参,第二个入参就是当前触发点击操作的行数据对象,直接从该参数中取对应字段拼接下载链接即可,修正后的代码如下:

{files && ( // 修正变量名和你定义的数据集对应
<Fragment>
<MaterialTable
columns={tableColumns}
data={files} // 和数据集变量名保持一致
title="Material Table - Custom Filter Component"
options={{search: false, filtering: true }}

actions={[
  {
    icon: 'save',
    tooltip: '保存文件',
    // 第二个参数rowData就是当前行的单条文件数据
    onClick: (event, rowData) => window.open('http://localhost:5000/files/' + rowData.name, '_blank').focus()
  }
]}
/>
</Fragment>)}

修改后点击每行的保存按钮,就会自动取当前行的name字段拼接下载链接,不会再出现undefined的问题。

内容的提问来源于stack exchange,提问作者Cissus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:06:03