我有一个文件上传组件(在 React 中编写),它通过点击处理程序触发文件上传。我想在上传过程中显示一个加载图标,因此我设置了一个 loading 状态,在调用文件处理函数时将其设置为 true。但是,在文件上传开始之前,状态更改只有时而被渲染出来,此时浏览器会冻结。因此,我搜索并发现可以将回调函数传递给 setState,该函数将在状态更改后和组件重新渲染后触发。但是,在我的情况下,我需要将从事件收集的文件传递给此回调函数……但这不起作用。我尝试过:
handleFile(files) {
this.setState({ loading: true }, () => {
console.log(files)
// here is where I want to read the files
})
}
-- 这是日志信息:文件列表 {长度:0}
handleFile(files) {
this.setState({ loading: true }, (files) => {
console.log(files)
// here is where I want to read the files
})
}
-- 这会记录未定义。
对于这个问题你有什么想法吗?顺便说一下,事件在另一个函数中处理,事件目标(文件)被传递到handleFiles函数中,问题似乎是将文件传递给回调函数。
谢谢
(files) => {
必须改为() =>
,否则你会遮蔽该标识符。 - Jonas Wilms