我有一个 axios 调用,我想在我的组件中设置 setState,但其中一个状态变量需要一些条件逻辑,而不是设置状态。现在我有点怀疑,做这件事的最佳做法是什么
}).then(res =>
this.setState({
name: res.data.fname,
sName: res.data.sname,
percentage: res.data.percentage,
result: res.data.result,
showResult: true,
type: this.typeHandler(this.state.percentage) // here a tried calling a handler to make my conditional setState call
})
)
}
typeHandler = (percentage) =>{
if(percentage >= 50){
this.setState({type: 'succes'})
}else{
this.setState({type: 'failure'})
}
}
当然,这段代码的问题是它会发生异步,因此状态最初不会设置正确。
有没有更好的方法来改进这种逻辑,所以状态最初与其他属性一起设置,我可以包含我的逻辑?
我想替代方案是先获得百分比,然后再调用处理程序。
1 回答
您可以使用 res.data.percentage 而不是在 setState 中使用 state。此外,typeHandler 必须返回一个值,而不是将其设置为状态,因为您已经在 setState 中调用它