【发布时间】:2020-10-20 08:57:23
【问题描述】:
我知道 setState 在异步函数中。但是如果我立即需要 state 的值,我怎样才能得到呢? 这是我的代码
class OfficerPage extends Component {
constructor(props) {
super(props);
this.state={
counterList: [],
currentCustomerValue: null,
counterValue: null
}
}
componentDidMount(){
this.getAllCounters();
this.getCurrentTicketId(this.state.counterValue) //cannot get value immidately
}
getAllCounters=()=>{
API.getAllCounters().then((res) => {
let allCounters=[];
for(let i=0; i<res.length; i++){
allCounters.push(res[i]);
}
this.setState({counterList: allCounters} )
})
.catch((err) => {
this.setState({AuthErr : err.msg});
});
}
getCurrentTicketId=(counterValue)=>{
API.getCurrentTicketId(counterValue).then((res) => {
this.setState({currentCustomerValue: res})
})
.catch((err) => {
this.setState({AuthErr : err.msg});
});
}
onChangeCounter = (event) => {
console.log(event.target.value+" vall");
this.setState({counterValue: event.target.value});
};
问题是 onChangeCounter 值不会立即更新,它会在 2 次迭代后发生变化。我该如何解决这个问题?
【问题讨论】:
-
您正在访问
componentDidMount中的状态,其中counterValue的值仍然是null。看起来您想像这样在onChangeCounter中调用getCurrentTicketId函数:this.setState({counterValue: event.target.value}, () => getCurrentTicketId(this.state.counterValue)); -
是的,它成功了,谢谢
标签: javascript reactjs