【发布时间】:2020-04-07 21:08:51
【问题描述】:
我有这个状态:
const [fingerprintingIssues, setFingerprintingIssues] = React.useState([])
我有一个函数可以遍历一堆数据进行验证。如果有错误,它会将它们添加到fingerprintingIssues 和setFingerprintingIssues。效果很好。
但是在这个方法(缩写)中,我在方法的complete 中检查fingerprintingIssues,它总是返回[]。我读过这是一个闭包和陈旧状态的问题,但我似乎看不出这里是如何应用的。
const validateDocument = data => {
const start = moment()
try {
Papa.LocalChunkSize = 10485
return Papa.parse(data, {
complete: () => {
// Log completion only if it’s been 20 seconds or more
const end = moment()
const duration = moment.duration(end.diff(start))
const seconds = Math.ceil(duration.asSeconds())
if (seconds < MIN_PROCESS_TIME) {
setTimeout(() => {
setUploadStep('tagging')
console.log('fingerprintingIssues', fingerprintingIssues)
}, (MIN_PROCESS_TIME - seconds) * 1000)
} else {
setUploadStep('tagging')
}
},
error: () => {
setDocumentError(true)
setDocumentReady(false)
},
})
…
有什么建议吗?
【问题讨论】:
标签: javascript reactjs closures react-hooks