作品与后端连接
Change-Id: I2098443223c022ddaa657d127d05d76d9c6b7cf1
diff --git a/src/components/selfStatus/selfStatus.tsx b/src/components/selfStatus/selfStatus.tsx
index 0fd0636..24028ad 100644
--- a/src/components/selfStatus/selfStatus.tsx
+++ b/src/components/selfStatus/selfStatus.tsx
@@ -23,14 +23,19 @@
const downloadPoints = useAppSelector(state => state.user.downloadPoints);
const avatar = useAppSelector(state => state.user.avatar) || 'https://pic.baike.soso.com/ugc/baikepic2/6664/20220301143956-1127285627_png_800_800_370852.jpg/0';
const dispatch = useAppDispatch();
- const { data, refresh } = useApi(() => request.get(getUserInfo), false);
- const dataRef = useRef(data);
- useEffect(() => {
- refresh();
+ const { refresh } = useApi(() => request.get(getUserInfo), false);
+ const fenchData = async () => {
+ const data = await refresh();
+ console.log(data)
+
if (data) {
- dispatch({ type: "user/getUserInfo", payload: data });
+ dispatch({ type: "user/getUserInfo", payload: data.userInfo });
}
- }, [dataRef, dispatch]);
+ }
+ useEffect(() => {
+ fenchData();
+
+ }, [ dispatch]);
function handleAvatarClick(){
nav('/homepage')
diff --git a/src/store/userReducer.ts b/src/store/userReducer.ts
index ab065b7..4334475 100644
--- a/src/store/userReducer.ts
+++ b/src/store/userReducer.ts
@@ -1,5 +1,6 @@
import { createSlice } from '@reduxjs/toolkit';
import { isTokenExpired } from '@/utils/jwt';
+import { getUserInfo } from '@/api/user';
interface UserState {
userId: string;
@@ -34,6 +35,7 @@
state.isLogin = true;
},
getUserInfo: (state, action) => {
+ console.log(action);
state.userId = action.payload.userId;
state.userName = action.payload.userName;
state.role = action.payload.role;
diff --git a/src/views/forum/index.tsx b/src/views/forum/index.tsx
index 13c369f..d2e7c5a 100644
--- a/src/views/forum/index.tsx
+++ b/src/views/forum/index.tsx
@@ -12,7 +12,12 @@
import ad2 from '&/assets/ad2.png'
import { useEffect } from "react";
+
+
export default function Forum() {
+
+
+
useEffect(() => {
// 禁止滚动
document.body.style.overflow = 'hidden';
diff --git a/src/views/homepage/homepage.tsx b/src/views/homepage/homepage.tsx
index 165ed67..697ed8f 100644
--- a/src/views/homepage/homepage.tsx
+++ b/src/views/homepage/homepage.tsx
@@ -1,7 +1,7 @@
import React, { useCallback, useEffect,useState,useRef } from 'react';
import styles from './homepage.module.css';
import { useApi } from '@/hooks/request';
-import { useSelector } from 'react-redux';
+import { useAppSelector } from '@/hooks/store';
import { RootState } from '@/store';
import { useNavigate } from 'react-router';
import Logo from '&/assets/logo.png';
@@ -46,37 +46,40 @@
const [works, setWorks] = useState<WorkItem[]>([]);
const worksRef = useRef<WorkItem[]>([]);
-
const navigate = useNavigate();
- const userInfo = useSelector((state: RootState) => state.user);
+ const userInfo = useAppSelector((state: RootState) => state.user);
const userId = userInfo.userId; // 从Redux获取当前用户ID
+
const { data:userdata, loading:userloading, error:usererror, refresh: getUserDetailRefresh } = useApi(
- () => request.get(getUserDetail, {params: {userId}}).then(res => res.data.data),
+ () => request.get(getUserDetail, {params: {userId}}),
+ false
);
- const { data:workdata, loading:workloading, error:workerror, refresh: getUserMessageRefresh } = useApi(
- () => request.get(getUserMessage, { params: { userId } }).then(res => res.data.data),
+ const { data: workdata, loading: workloading, error: workerror, refresh: getUserMessageRefresh } = useApi(
+ () => request.get(`${getUserMessage}/${userId}`), // 注意这里拼接了 userId
false
);
const getUserDetails = debounce(async () => {
try{
- const res = await getUserDetailRefresh({userId});
- console.log("res", res);
- const data = res?.userInfo;
-
+ // const res = await getUserDetailRefresh({userId});
+ const res = await getUserDetailRefresh();
+ const data_1 = res?.userInfo;
+ const data_2 = res?.statistics;
+ console.log('data', data_1)
const formatted: UserStats = {
- username: data.username,
- uploadAmount: data.uploadAmount,
- level: data.level,
- likes: data.likes,
- following: data.following,
- followers: data.followers,
- mutualFollows: data.mutualFollows
+ username: data_1.userName,
+ uploadAmount: data_1.uploadAmount,
+ level: data_1.userLevel,
+ likes: data_2.likes,
+ following: data_2.followingCount,
+ followers: data_2.followersCount,
+ mutualFollows: data_2.mutualFollows
};
setUserStats(formatted);
+ console.log('formatted:',formatted)
}catch(error){
console.error('获取用户信息错误', error);
}
@@ -84,19 +87,21 @@
const getUserPost = debounce(async () => {
- try{
-
- const url = `${getUserMessage}?userId=${userId}`;
+ try {
+ const url = `${getUserMessage}/${userId}`; // ✅ 正确的 URL 拼接方式
console.log("请求发送:", url);
- const res = await getUserMessageRefresh({userId});
+ // 不需要传 userId 参数了,因为 URL 已包含它
+ const res = await getUserMessageRefresh();
console.log("res", res);
+
worksRef.current = res;
setWorks(res);
- }catch(error) {
+ } catch (error) {
console.error('获取帖子列表错误', error);
}
- },1000) as () => void;
+ }, 1000) as () => void;
+
useEffect(() => {
if (!userId) {
diff --git a/src/views/login/login.tsx b/src/views/login/login.tsx
index fef6e32..d3414ec 100644
--- a/src/views/login/login.tsx
+++ b/src/views/login/login.tsx
@@ -48,7 +48,7 @@
if (userInfo == null || (userInfo as any).error) {
throw new Error('获取用户信息失败');
}
- dispatch({ type: "user/getUserInfo", payload: userInfo });
+ dispatch({ type: "user/getUserInfo", payload: userInfo.userInfo });
nav('/');
} catch (error) {
showErrorMessage('登录失败,请检查您的用户名和密码');
diff --git a/src/views/postDetail/postDetail.tsx b/src/views/postDetail/postDetail.tsx
index d6029a8..202907b 100644
--- a/src/views/postDetail/postDetail.tsx
+++ b/src/views/postDetail/postDetail.tsx
@@ -65,6 +65,8 @@
const commentsRes = await getPostCommentsRefresh();
setComments(commentsRes as CommentResponse[]);
setLoading(false);
+ console.log("postRes:", postRes);
+ console.log("commentsRes:", commentsRes);
};
fetchData();
}, [postId]);
diff --git a/src/views/upload/upload.tsx b/src/views/upload/upload.tsx
index 1bf096a..19e1197 100644
--- a/src/views/upload/upload.tsx
+++ b/src/views/upload/upload.tsx
@@ -71,7 +71,7 @@
try {
const res = await instance.post(Upload, payload);
- console.log('mock返回内容:', res.code);
+ console.log('后端返回内容:', res.code);
// 判断返回内容是否成功(根据你 mock 接口返回的 code 字段)
if (res.code !== 0) throw new Error('发布失败');