diff --git a/src/components/selfStatus/selfStatus.tsx b/src/components/selfStatus/selfStatus.tsx
index 61d3f4e..c7ea79d 100644
--- a/src/components/selfStatus/selfStatus.tsx
+++ b/src/components/selfStatus/selfStatus.tsx
@@ -1,4 +1,4 @@
-import React, { useEffect } from "react";
+import React, { useEffect, useRef } from "react";
 import { useAppSelector } from "../../hooks/store";
 import style from "./style.module.css"
 import { useApi } from "@/hooks/request";
@@ -24,17 +24,13 @@
     const avatar = useAppSelector(state => state.user.avatar);
     const dispatch = useAppDispatch();
     const { data, refresh } = useApi(() => request.get(getUserInfo), false);
+    const dataRef = useRef(data);
     useEffect(() => {
-        if (avatar.length === 0) {
-            refresh(); // 触发 API 请求
-        }
-    }, [avatar, refresh]);
-
-    useEffect(() => {
+        refresh();
         if (data) {
             dispatch({ type: "user/getUserInfo", payload: data });
         }
-    }, [data, dispatch]);
+    }, [dataRef, dispatch]);
 
     function handleAvatarClick(){
         nav('/homepage')
diff --git a/src/store/userReducer.ts b/src/store/userReducer.ts
index b677263..ab065b7 100644
--- a/src/store/userReducer.ts
+++ b/src/store/userReducer.ts
@@ -29,6 +29,7 @@
     initialState,
     reducers: {
         login: (state, action) => {
+            console.log(action.payload)
             localStorage.setItem('token', action.payload.token);
             state.isLogin = true;
         },
diff --git a/src/utils/axios.ts b/src/utils/axios.ts
index 3c9c122..bb44c82 100644
--- a/src/utils/axios.ts
+++ b/src/utils/axios.ts
@@ -30,13 +30,14 @@
     (response) => {
       // 统一处理响应数据格式
       if (response.status === 200) {
-        return response.data
+        return response.data.data
       }
       return Promise.reject(response.data)
     },
     (error) => {
       if(error.status===401){
-       // window.location.href = '/login';
+        localStorage.removeItem('token');
+        // window.location.href = '/login';
       }
       // 统一错误处理
       console.error('API Error:', error.response?.status, error.message)
