0

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

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。

有什么我想念的吗?

4

2 回答 2

1

根据getValidationResponse使用方式,我怀疑闭包可能存在问题,validationCount导致0更新的值1始终存在。

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

setValidationCount(prevCount => prevCount + 1);
于 2020-07-09T20:39:06.633 回答
0

这是一个闭包问题,你可以在这里看到它的作用,基本上,如果你慢慢点击它,它工作正常,如果你在上一次更新结束之前多次点击它,你创建了validationCount仍然没有更新的函数. 记住 setState 是一个异步函数总是好的。

于 2020-07-09T20:46:46.533 回答