fix-user-collections
Change-Id: I51af59fc5866095a4d8ef248be7a28b27d9f4f64
diff --git a/src/pages/UserCenter/UserCollect.jsx b/src/pages/UserCenter/UserCollect.jsx
index e69de29..59d9c9a 100644
--- a/src/pages/UserCenter/UserCollect.jsx
+++ b/src/pages/UserCenter/UserCollect.jsx
@@ -0,0 +1,82 @@
+import React, { useEffect, useState } from 'react';
+import axios from 'axios';
+import Header from '../../components/Header';
+import UserNav from './UserNav';
+import { useUser } from '../../context/UserContext';
+import { useLocation } from 'wouter'; // ✅ 引入 wouter 的 useLocation
+import './UserCollect.css';
+
+const UserCollect = () => {
+ const { user, loading: userLoading } = useUser();
+ const [collections, setCollections] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const [error, setError] = useState(null);
+ const [, navigate] = useLocation(); // ✅ 获取跳转函数
+
+ useEffect(() => {
+ if (userLoading) return;
+
+ if (!user || !user.userId) {
+ setError('未登录或用户信息获取失败');
+ setLoading(false);
+ return;
+ }
+
+ const fetchCollections = async () => {
+ try {
+ const response = await axios.get(`/echo/forum/posts/${user.userId}/getAllcollections`);
+ setCollections(response.data || []);
+ setError(null);
+ } catch (error) {
+ console.error('获取收藏失败:', error);
+ setError('获取收藏失败,请稍后再试');
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ fetchCollections();
+ }, [user, userLoading]);
+
+ return (
+ <div className="user-profile-container">
+ <Header />
+ <div className="user-center">
+ <div className="user-nav-container">
+ <UserNav />
+ </div>
+
+ <div className="common-card">
+ <div className="right-content">
+ <h2 style={{ marginBottom: '1rem' }}>我的收藏</h2>
+ {userLoading || loading ? (
+ <p>加载中...</p>
+ ) : error ? (
+ <p className="error">{error}</p>
+ ) : collections.length === 0 ? (
+ <p>暂无收藏内容。</p>
+ ) : (
+ collections.map((post) => (
+ <div
+ key={post.postNo}
+ className="post-item"
+ onClick={() => navigate(`/forum/post/${post.postNo}`)} // ✅ 跳转帖子详情页
+ style={{ cursor: 'pointer' }}
+ >
+ <h3>{post.title || '无标题'}</h3>
+ <p>{post.postContent?.slice(0, 100) || '暂无内容'}...</p>
+ <p style={{ fontSize: '12px', color: '#888' }}>
+ 作者:{post.username || '未知'} | 发布时间未知
+ </p>
+ <hr />
+ </div>
+ ))
+ )}
+ </div>
+ </div>
+ </div>
+ </div>
+ );
+};
+
+export default UserCollect;