diff --git a/src/components/UserInfo/index.tsx b/src/components/UserInfo/index.tsx index 0408782..0873a2c 100644 --- a/src/components/UserInfo/index.tsx +++ b/src/components/UserInfo/index.tsx @@ -74,6 +74,7 @@ const on_edit = () => { // 用户信息卡片组件 const UserInfoCardComponent: React.FC = ({ editable = true, + user_info: user_info_prop, is_current_user, is_following = false, collapseProfile, @@ -84,8 +85,9 @@ const UserInfoCardComponent: React.FC = ({ set_user_info, onTab, }) => { - - const user_info = useUserInfo(); + const global_user_info = useUserInfo(); + // 查看别人页面时用传入的 user_info,个人页用全局 store + const user_info = is_current_user ? global_user_info : (user_info_prop ?? global_user_info); const nickname_change_status = useNicknameChangeStatus(); const { setShowGuideBar } = useGlobalState(); const { updateUserInfo, updateNickname, fetchLastTestResult } = @@ -98,18 +100,16 @@ const UserInfoCardComponent: React.FC = ({ const prevUserInfoRef = useRef>(); useEffect(() => { - // 只在 user_info 真正变化时打印(通过 JSON 序列化比较) const prevStr = JSON.stringify(prevUserInfoRef.current); const currentStr = JSON.stringify(user_info); if (prevStr !== currentStr) { - console.log("UserInfoCard 用户信息变化:", user_info); prevUserInfoRef.current = user_info; } - // 如果全局状态中没有测试结果,则调用接口(使用请求锁,多个组件同时调用时只会请求一次) - if (!lastTestResult && user_info?.id) { + // 仅当前用户才拉取 NTRP 测试结果 + if (is_current_user && !lastTestResult && user_info?.id) { fetchLastTestResult(); } - }, [user_info?.id, lastTestResult, fetchLastTestResult]); + }, [user_info?.id, lastTestResult, fetchLastTestResult, is_current_user]); // 从全局状态中获取测试状态 const ntrpTested = lastTestResult?.has_test_in_last_month || false;