我正在尝试更新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。
有什么我想念的吗?
答案 0 :(得分:1)
根据getValidationResponse
的使用方式,我怀疑关闭可能会捕获validationCount
为0
的闭包问题,从而导致更新后的值始终为1
。 / p>
尝试使用functional updates,它将根据先前的值更新validationCount
的值。
setValidationCount(prevCount => prevCount + 1);
答案 1 :(得分:0)
这是一个关闭问题,您可以在操作here中看到它,基本上,如果缓慢单击它,它会正常工作,如果在完成上一个更新之前多次单击它,则可以创建函数validateCount仍未更新的地方。最好记住setState是一个异步函数。