修改帖子
Change-Id: I467b35242bce8b27d612eb96f2710b27aa03d1d2
diff --git a/src/pages/Forum/posts-detail/PostDetailPage.jsx b/src/pages/Forum/posts-detail/PostDetailPage.jsx
index a505d88..159bdfa 100644
--- a/src/pages/Forum/posts-detail/PostDetailPage.jsx
+++ b/src/pages/Forum/posts-detail/PostDetailPage.jsx
@@ -1,9 +1,9 @@
-import React, { useEffect, useState } from 'react';
+import React, { useContext, useEffect, useState } from 'react';
import { useParams } from 'wouter';
import { GoodTwo, Star } from '@icon-park/react';
import { getPostDetail, getPostComments, likePost, unlikePost, addCommentToPost, collectPost, uncollectPost } from './api'; // 引入你的 API 函数
import './PostDetailPage.css';
-import { useUser } from '../../../context/UserContext'; // 注意路径
+import { UserContext, useUser } from '../../../context/UserContext'; // 注意路径
import Header from '../../../components/Header';
const PostDetailPage = () => {
@@ -20,7 +20,8 @@
const [replyToUsername, setReplyToUsername] = useState(null);
// 获取当前用户ID(假设从上下文中获取)
- const { user } = useUser(); // 你需要从用户上下文获取用户 ID
+ const { user } = useContext(UserContext);
+ // const { user } = useUser(); // 你需要从用户上下文获取用户 ID
useEffect(() => {
const fetchPostDetail = async () => {
@@ -69,7 +70,7 @@
try {
if (isLiked) {
// 取消点赞
- await unlikePost(postId, user.id);
+ await unlikePost(postId, user.userId);
setIsLiked(false);
setPostDetail((prev) => ({
...prev,
@@ -77,7 +78,7 @@
}));
} else {
// 点赞
- await likePost(postId, user.id);
+ await likePost(postId, user.userId);
setIsLiked(true);
setPostDetail((prev) => ({
...prev,
@@ -100,7 +101,7 @@
try {
if (isCollected) {
// 取消收藏 - 使用原有的collectPost函数,传递action: "cancel"
- await collectPost(postId, user.id, "cancel");
+ await collectPost(postId, user.userId, "cancel");
setIsCollected(false);
setPostDetail((prev) => ({
...prev,
@@ -108,7 +109,7 @@
}));
} else {
// 收藏
- await collectPost(postId, user.id, "collect");
+ await collectPost(postId, user.userId, "collect");
setIsCollected(true);
setPostDetail((prev) => ({
...prev,
@@ -121,40 +122,57 @@
}
};
- // 添加评论
+// 添加评论
const handleAddComment = async () => {
+ // 直接使用组件顶层获取的 user
+ if (!user || !user.userId) {
+ alert('请先登录后再评论');
+ return;
+ }
+
if (!newComment.trim()) {
alert('评论内容不能为空');
return;
}
try {
+ // 构建评论数据
const commentPayload = {
content: newComment,
- userId: user.id,
+ userId: user.userId, // 使用已获取的用户ID
isAnonymous: false,
com_comment_id: replyToCommentId || null,
};
+ // 发送评论请求
const commentData = await addCommentToPost(postId, commentPayload);
- setComments((prev) => [
- ...prev,
- {
- commentId: (commentData && commentData.commentId) || Date.now(),
- post_id: postId,
- userId: user.id,
- content: newComment,
- commentTime: new Date().toISOString(),
- comCommentId: replyToCommentId,
- },
- ]);
+ // 更新评论列表
+ const newCommentItem = {
+ commentId: commentData?.commentId || Date.now(),
+ post_id: postId,
+ userId: user.userId,
+ content: newComment,
+ commentTime: new Date().toISOString(),
+ comCommentId: replyToCommentId,
+ };
+ setComments((prevComments) => [newCommentItem, ...prevComments]);
+
+ // 重置表单
setNewComment('');
setReplyToCommentId(null);
- } catch (err) {
- console.error('评论添加失败:', err);
- alert('评论失败,请稍后再试');
+
+ // alert('评论成功!');
+ } catch (error) {
+ console.error('评论失败:', error);
+
+ const errorMessage =
+ error.response?.data?.message ||
+ error.message ||
+ '评论失败,请稍后再试';
+
+ alert(errorMessage);
}
};