错误:在引用先前状态时在setstate中使用回调

时间:2019-10-29 11:16:47

标签: reactjs

在代码的最后一行出现以下错误:

在引用先前状态时在setstate中使用回调

likeClick = (e: SyntheticEvent<HTMLButtonElement>): void => {
e.stopPropagation();
const { content, comment } = this.props;
const { isLiked, isWaiting } = this.state;

if (isWaiting) {
  return;
}
if (content !== null) {
  if (isLiked) {
    this.contentActions.unlikeContent(
      content.id,
      this.onUnlikeContentCallback,
    );
  } else {
    this.xApiService.sendContentLikedStatement(content);
    this.contentActions.likeContent(content.id, this.onLikeContentCallback);
  }
}
this.setState({ ...this.state, isWaiting: true })

};

1 个答案:

答案 0 :(得分:0)

您需要使用updater的{​​{1}}版本

setState

this.setState(prev => ({ ...prev, isWaiting: true })) 是可变的,您不能依靠它来传播旧状态,this的更新程序版本为您提供状态的快照,即使实际状态为,它也不会改变蜜蜂在其他地方变了。