From ff1d8b792804b3d22a27cd8520a5e8bfd06cfdcb Mon Sep 17 00:00:00 2001 From: Snowykami Date: Wed, 10 Sep 2025 11:38:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E7=82=B9=E8=B5=9E?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=9A=84=E7=8A=B6=E6=80=81=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E7=A1=AE=E4=BF=9D=E5=A4=B1=E8=B4=A5=E6=97=B6=E5=9B=9E?= =?UTF-8?q?=E6=BB=9A=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/components/comment/comment-item.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/web/src/components/comment/comment-item.tsx b/web/src/components/comment/comment-item.tsx index 4abf5c0..ffb537d 100644 --- a/web/src/components/comment/comment-item.tsx +++ b/web/src/components/comment/comment-item.tsx @@ -63,16 +63,21 @@ export function CommentItem( }); return; } - setLiked(!liked) // 提前转换状态,让用户觉得响应很快 + // 提前转换状态,让用户觉得响应很快 + const likedPrev = liked; + const likeCountPrev = likeCount; + setLiked(prev => !prev); + setLikeCount(prev => prev + (likedPrev ? -1 : 1)); toggleLike( { targetType: TargetType.Comment, targetId: comment.id } ).then(res => { 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); }).catch(error => { toast.error(t("like_failed") + ": " + error.message); + // 失败回滚 + setLiked(likedPrev); + setLikeCount(likeCountPrev); setCanClickLike(true); }); }