在代码的最后一行出现以下错误:
在引用先前状态时在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 })
};
答案 0 :(得分:0)
您需要使用updater
的{{1}}版本
setState
this.setState(prev => ({ ...prev, isWaiting: true }))
是可变的,您不能依靠它来传播旧状态,this
的更新程序版本为您提供状态的快照,即使实际状态为,它也不会改变蜜蜂在其他地方变了。