使用react-csv包,我异步加载数据,然后尝试一键从服务器下载检索到的数据。我目前面临的问题是点击比当前状态落后了一步。当组件第一次渲染时,它会下载一个空的 CSV 文件,第二次单击时,它会下载上次获取的数据,而不是当前/最新的获取。这与此处描述的情况相同,但那里提到的解决方案没有在我的例子中工作:这里是正在处理的代码:
const [newData, setNewData] = useState([]);
const csvLink = React.createRef();
const csvExport = (
<div>
<Button className="pull-right title-button" onClick={getData}>
CSV Export
</Button>
<CSVLink data={newData} headers={headers} target="_blank" ref={csvLink}></CSVLink>
</div>
);
const getData = async () => {
await getRetailLinkOutcomes(auth, startDate, endDate, 0, 0, filters, sort, sortDirection, false).then((response) => {
setNewData(response.records);
csvLink.current.link.click();
});
};
Run Code Online (Sandbox Code Playgroud) 当我从 docker 容器运行 ASP.Net 核心 Web API 时,它会引发验证错误:
System.InvalidOperationException:验证类型“ClassName”时,ValidationVisitor 超出了配置的最大验证深度“32”。这可能表示非常深或无限递归的对象图。考虑修改“MvcOptions.MaxValidationDepth”或取消对模型类型的验证。
我唯一能找到有关此问题的讨论的地方是在
这里,似乎在最新版本的 ASP.net 核心上提供了修复程序。我将我的 .net 核心版本更新到最新版本,但仍然面临同样的问题。
这是验证导致问题的类的代码:
[Required]
[Range(1, long.MaxValue)]
public long Id { get; set; }
[Required(AllowEmptyStrings = false)]
[StringLength(1000)]
public string Name { get; set; }
[Required(AllowEmptyStrings = false)]
[StringLength(200)]
public string Category { get; set; }
[Required(AllowEmptyStrings = false)]
[StringLength(13)]
public string Division { get; set; }
Run Code Online (Sandbox Code Playgroud)
重要提示:我是唯一面临此问题的人,因为我团队的其他成员正在成功运行该项目,非常感谢任何帮助。