Reactjs 错误:引用上一个状态时在setstate中使用回调

Reactjs 错误:引用上一个状态时在setstate中使用回调,reactjs,Reactjs,我在最后一行代码中遇到以下错误: 引用前一个状态时,在setstate中使用回调 likeClick = (e: SyntheticEvent<HTMLButtonElement>): void => { e.stopPropagation(); const { content, comment } = this.props; const { isLiked, isWaiting } = this.state; if (isWaiting) { return; } if

我在最后一行代码中遇到以下错误:

引用前一个状态时,在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 })
likeClick=(e:SyntheticEvent):void=>{
e、 停止传播();
const{content,comment}=this.props;
const{isLiked,isWaiting}=this.state;
如果(正在等待){
返回;
}
如果(内容!==null){
如果(islike){
this.contentActions.unlinkcontent(
content.id,
此.onunlikecontent回调,
);
}否则{
this.xApiService.sendContentLikedStatement(content);
this.contentActions.likeContent(content.id,this.onLikeContentCallback);
}
}
this.setState({…this.state,isWaiting:true})

})

您需要使用
更新程序
版本的
设置状态

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