Javascript 使用无状态React在异步函数内设置状态
我有一个简单的react表单,在其中一个字段的“onBlur”事件中使用了一个异步函数。我想在后端检查一个信息,然后根据响应更新一些字段 问题是设置状态的行为非常奇怪。它似乎有时会使它变得更为流行,有时则不然。我是否需要做一些“特殊”的事情来设置异步函数中的状态Javascript 使用无状态React在异步函数内设置状态,javascript,reactjs,asynchronous,Javascript,Reactjs,Asynchronous,我有一个简单的react表单,在其中一个字段的“onBlur”事件中使用了一个异步函数。我想在后端检查一个信息,然后根据响应更新一些字段 问题是设置状态的行为非常奇怪。它似乎有时会使它变得更为流行,有时则不然。我是否需要做一些“特殊”的事情来设置异步函数中的状态 async function handleEmailBlur(event: ChangeEvent<HTMLInputElement>) { . . . const {id}
async function handleEmailBlur(event: ChangeEvent<HTMLInputElement>) {
. . .
const {id} = data[0]
let toSave = data[0]
delete toSave.id
const toSaveC = toSave
console.log("===> To Save")
console.log(toSave)
setId(id)
setRecoveredData({...toSaveC})
console.log("===> Recovered Data")
console.log(recoveredData)
. . .
}
异步函数handleEmailBlur(事件:ChangeEvent){
. . .
常量{id}=data[0]
让toSave=数据[0]
删除toSave.id
常数toSaveC=toSave
console.log(“=>保存”)
console.log(toSave)
setId(id)
setRecoveredData({…toSaveC})
console.log(“=>恢复的数据”)
console.log(recoveredData)
. . .
}
在本例中,虽然
toSaveC
有数据,但具有相同的字段名,RecoveredData
最终不显示任何数据。由于异步反应更新状态,请使用useffect
钩子检查状态更改,如下所示:
useEffect(()=>console.log(recoveredData),[recoveredData])
此效果将在
recoveredData
更改时触发。您在handleEmailBlur函数外部记录日志,它会很好,tks!我不确定这样做是否正确!!