反应 useState setter 承诺不更新

React useState setter in promise not updating

我正在尝试更新 axios 响应中的使用状态计数,但它无法正常工作。

let [ validationCount , setValidationCount ] = useState(0);


function getValidationResponse(validationUrl:string, validationKey:string)
    {
           axios.get("https://test.com/health")
                .then(res => {
                    setValidationCount(validationCount+1);
                }).catch(err => {
                
            });
            
        return "";
    }

以上函数被调用两次,但验证计数始终为 1。

有什么我遗漏的吗?

根据 getValidationResponse 的使用方式,我怀疑捕获 validationCount0 的闭包可能存在问题,导致更新值始终为 1 .

尝试使用 functional updates,它将根据先前的值更新 validationCount 的值。

setValidationCount(prevCount => prevCount + 1);

是一个关闭问题,你可以看到它的动作here,基本上,如果你慢慢点击它,它就可以了,如果你在上次更新结束之前多次点击它,你创建 validationCount 仍未更新的函数。记住 setState 是一个异步函数总是好的。