3.1 KiB
3.1 KiB
fetchUserInfo 调用分析
调用位置汇总
✅ 合理的调用
-
src/services/loginService.ts (第160行)
- 登录成功后调用,确保用户信息同步到 store
- ✅ 合理
-
src/main_pages/index.tsx (第63行)
- 微信授权成功后调用
- ✅ 合理(主入口,需要确保用户信息加载)
-
src/game_pages/list/index.tsx (第228行)
- 在 useEffect 中,等待 waitForAuthInit 后调用
- ✅ 合理
-
src/game_pages/detail/index.tsx (第55行)
- 在 useEffect 中,等待 waitForAuthInit 后调用
- ✅ 合理
-
src/game_pages/sharePoster/index.tsx (第47行)
- 在 handleGenPoster 中,等待 waitForAuthInit 后调用
- ✅ 合理(需要用户信息生成海报)
-
src/components/NTRPTestEntryCard/index.tsx (第35行)
- 在 useEffect 中,等待 waitForAuthInit 后调用
- ✅ 合理
-
src/utils/authInit.ts (第29、39行)
- 在静默登录成功后调用
- ✅ 合理(核心授权逻辑)
-
src/home_pages/index.tsx (第20行)
- 在静默登录成功后调用
- ✅ 合理
⚠️ 可能重复的调用
-
src/main_pages/components/ListPageContent.tsx (第204行)
- 在 useEffect 中调用,等待 waitForAuthInit
- ⚠️ 问题:这是
main_pages/index.tsx的子组件 main_pages/index.tsx已经在授权成功后调用了fetchUserInfo- 建议:移除这里的调用,因为父组件已经调用了
-
src/other_pages/ntrp-evaluate/index.tsx - Intro组件 (第159、180行)
- 第159行:在 useEffect 中检查 userInfo 为空时调用
- 第180行:在 getLastResult 中检查 userInfo 为空时调用
- ⚠️ 问题:两个地方都可能调用,有重复风险
- 建议:移除第159行的调用,只在 getLastResult 中调用(因为已经等待了 waitForAuthInit)
-
src/other_pages/ntrp-evaluate/index.tsx - Result组件 (第463、475行)
- 第463行:在 useEffect 中检查 userInfo 为空时调用
- 第475行:在 init 中检查 userInfo 为空时调用
- ⚠️ 问题:两个地方都可能调用,有重复风险
- 建议:移除第463行的调用,只在 init 中调用(因为已经等待了 waitForAuthInit)
优化建议
1. 移除重复调用
main_pages/components/ListPageContent.tsx- 移除 fetchUserInfo 调用(父组件已调用)ntrp-evaluate/index.tsx- Intro 组件:移除第一个 useEffect 中的调用ntrp-evaluate/index.tsx- Result 组件:移除第一个 useEffect 中的调用
2. 调用原则
- ✅ 主入口页面(main_pages/index.tsx)应该在授权成功后调用
- ✅ 子组件不应该重复调用,应该依赖父组件或 store 中的数据
- ✅ 独立页面(如 game_pages/*)可以调用,但应该等待 waitForAuthInit
- ✅ 工具函数(authInit.ts)中的调用是必要的
总结
当前问题:
main_pages/components/ListPageContent.tsx与父组件重复调用ntrp-evaluate/index.tsx中 Intro 和 Result 组件都有重复调用
建议修复:
- 移除子组件中的重复调用
- 统一在等待 waitForAuthInit 后的逻辑中调用