ReactJS 状态更新和立即访问

ReactJS state update and immediate access

onContactChange = (contactInfo) => {
if (!this.state.isRecipientSelected) {
  this.setState({ ...this.state, isRecipientSelected: true });
}
if (contactInfo.selectedContactAccount.type && this.state.isRecipientSelected) {
  //...

在上面的代码段中,isRecipientSelected 设置为 True,然后立即在下一个 if 子句的条件中访问它的值。在 ReactJs 中,setState 是异步的,所以我假设当立即访问第二个 if 子句中的值时,isRecipientSelected 值可能保持不变。

我的假设是否正确?

是的。由于 setState 是一个同步函数,所以最好在 setState 中使用一个回调函数,该回调函数只会在设置状态后调用。你的情况:

if (!this.state.isRecipientSelected) {
  this.setState({ ...this.state, isRecipientSelected: true },function(){
      //Rest of the code
   }
);
}