Javascript 使用无状态React在异步函数内设置状态

Javascript 使用无状态React在异步函数内设置状态,javascript,reactjs,asynchronous,Javascript,Reactjs,Asynchronous,我有一个简单的react表单,在其中一个字段的“onBlur”事件中使用了一个异步函数。我想在后端检查一个信息,然后根据响应更新一些字段 问题是设置状态的行为非常奇怪。它似乎有时会使它变得更为流行,有时则不然。我是否需要做一些“特殊”的事情来设置异步函数中的状态 async function handleEmailBlur(event: ChangeEvent<HTMLInputElement>) { . . . const {id}

我有一个简单的react表单,在其中一个字段的“onBlur”事件中使用了一个异步函数。我想在后端检查一个信息,然后根据响应更新一些字段

问题是设置状态的行为非常奇怪。它似乎有时会使它变得更为流行,有时则不然。我是否需要做一些“特殊”的事情来设置异步函数中的状态

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!我不确定这样做是否正确!!