fix: 优化点赞功能的状态管理,确保失败时回滚状态

This commit is contained in:
2025-09-10 11:38:04 +08:00
parent 648a329a7b
commit ff1d8b7928

View File

@ -63,16 +63,21 @@ export function CommentItem(
}); });
return; return;
} }
setLiked(!liked) // 提前转换状态,让用户觉得响应很快 // 提前转换状态,让用户觉得响应很快
const likedPrev = liked;
const likeCountPrev = likeCount;
setLiked(prev => !prev);
setLikeCount(prev => prev + (likedPrev ? -1 : 1));
toggleLike( toggleLike(
{ targetType: TargetType.Comment, targetId: comment.id } { targetType: TargetType.Comment, targetId: comment.id }
).then(res => { ).then(res => {
toast.success(res.data.status ? t("like_success") : t("unlike_success")); toast.success(res.data.status ? t("like_success") : t("unlike_success"));
setLiked(res.data.status);
setLikeCount(res.data.status ? likeCount + 1 : likeCount - 1);
setCanClickLike(true); setCanClickLike(true);
}).catch(error => { }).catch(error => {
toast.error(t("like_failed") + ": " + error.message); toast.error(t("like_failed") + ": " + error.message);
// 失败回滚
setLiked(likedPrev);
setLikeCount(likeCountPrev);
setCanClickLike(true); setCanClickLike(true);
}); });
} }