Reactjs 错误:引用上一个状态时在setstate中使用回调
我在最后一行代码中遇到以下错误: 引用前一个状态时,在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
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
为您提供了状态快照,即使实际状态在其他地方发生了更改,也不会更改