反应 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
的使用方式,我怀疑捕获 validationCount
为 0
的闭包可能存在问题,导致更新值始终为 1
.
尝试使用 functional updates,它将根据先前的值更新 validationCount
的值。
setValidationCount(prevCount => prevCount + 1);
是一个关闭问题,你可以看到它的动作here,基本上,如果你慢慢点击它,它就可以了,如果你在上次更新结束之前多次点击它,你创建 validationCount 仍未更新的函数。记住 setState 是一个异步函数总是好的。
我正在尝试更新 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
的使用方式,我怀疑捕获 validationCount
为 0
的闭包可能存在问题,导致更新值始终为 1
.
尝试使用 functional updates,它将根据先前的值更新 validationCount
的值。
setValidationCount(prevCount => prevCount + 1);
是一个关闭问题,你可以看到它的动作here,基本上,如果你慢慢点击它,它就可以了,如果你在上次更新结束之前多次点击它,你创建 validationCount 仍未更新的函数。记住 setState 是一个异步函数总是好的。