1
This commit is contained in:
@@ -74,6 +74,7 @@ const on_edit = () => {
|
|||||||
// 用户信息卡片组件
|
// 用户信息卡片组件
|
||||||
const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
|
const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
|
||||||
editable = true,
|
editable = true,
|
||||||
|
user_info: user_info_prop,
|
||||||
is_current_user,
|
is_current_user,
|
||||||
is_following = false,
|
is_following = false,
|
||||||
collapseProfile,
|
collapseProfile,
|
||||||
@@ -84,8 +85,9 @@ const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
|
|||||||
set_user_info,
|
set_user_info,
|
||||||
onTab,
|
onTab,
|
||||||
}) => {
|
}) => {
|
||||||
|
const global_user_info = useUserInfo();
|
||||||
const 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 nickname_change_status = useNicknameChangeStatus();
|
||||||
const { setShowGuideBar } = useGlobalState();
|
const { setShowGuideBar } = useGlobalState();
|
||||||
const { updateUserInfo, updateNickname, fetchLastTestResult } =
|
const { updateUserInfo, updateNickname, fetchLastTestResult } =
|
||||||
@@ -98,18 +100,16 @@ const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
|
|||||||
const prevUserInfoRef = useRef<Partial<UserInfoType>>();
|
const prevUserInfoRef = useRef<Partial<UserInfoType>>();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// 只在 user_info 真正变化时打印(通过 JSON 序列化比较)
|
|
||||||
const prevStr = JSON.stringify(prevUserInfoRef.current);
|
const prevStr = JSON.stringify(prevUserInfoRef.current);
|
||||||
const currentStr = JSON.stringify(user_info);
|
const currentStr = JSON.stringify(user_info);
|
||||||
if (prevStr !== currentStr) {
|
if (prevStr !== currentStr) {
|
||||||
console.log("UserInfoCard 用户信息变化:", user_info);
|
|
||||||
prevUserInfoRef.current = user_info;
|
prevUserInfoRef.current = user_info;
|
||||||
}
|
}
|
||||||
// 如果全局状态中没有测试结果,则调用接口(使用请求锁,多个组件同时调用时只会请求一次)
|
// 仅当前用户才拉取 NTRP 测试结果
|
||||||
if (!lastTestResult && user_info?.id) {
|
if (is_current_user && !lastTestResult && user_info?.id) {
|
||||||
fetchLastTestResult();
|
fetchLastTestResult();
|
||||||
}
|
}
|
||||||
}, [user_info?.id, lastTestResult, fetchLastTestResult]);
|
}, [user_info?.id, lastTestResult, fetchLastTestResult, is_current_user]);
|
||||||
|
|
||||||
// 从全局状态中获取测试状态
|
// 从全局状态中获取测试状态
|
||||||
const ntrpTested = lastTestResult?.has_test_in_last_month || false;
|
const ntrpTested = lastTestResult?.has_test_in_last_month || false;
|
||||||
|
|||||||
Reference in New Issue
Block a user