Files
mini-programs/fetchUserInfo_analysis.md
2025-11-21 14:50:42 +08:00

3.0 KiB
Raw Blame History

fetchUserInfo 调用分析

调用位置汇总

合理的调用

  1. src/services/loginService.ts (第160行)

    • 登录成功后调用,确保用户信息同步到 store
    • 合理
  2. src/main_pages/index.tsx (第63行)

    • 微信授权成功后调用
    • 合理(主入口,需要确保用户信息加载)
  3. src/game_pages/detail/index.tsx (第55行)

    • 在 useEffect 中,等待 waitForAuthInit 后调用
    • 合理
  4. src/game_pages/sharePoster/index.tsx (第47行)

    • 在 handleGenPoster 中,等待 waitForAuthInit 后调用
    • 合理(需要用户信息生成海报)
  5. src/components/NTRPTestEntryCard/index.tsx (第35行)

    • 在 useEffect 中,等待 waitForAuthInit 后调用
    • 合理
  6. src/utils/authInit.ts (第29、39行)

    • 在静默登录成功后调用
    • 合理(核心授权逻辑)
  7. src/home_pages/index.tsx (第20行)

    • 在静默登录成功后调用
    • 合理

⚠️ 可能重复的调用

  1. src/main_pages/components/ListPageContent.tsx (第204行)

    • 在 useEffect 中调用,等待 waitForAuthInit
    • ⚠️ 问题:这是 main_pages/index.tsx 的子组件
    • main_pages/index.tsx 已经在授权成功后调用了 fetchUserInfo
    • 建议:移除这里的调用,因为父组件已经调用了
  2. src/other_pages/ntrp-evaluate/index.tsx - Intro组件 (第159、180行)

    • 第159行在 useEffect 中检查 userInfo 为空时调用
    • 第180行在 getLastResult 中检查 userInfo 为空时调用
    • ⚠️ 问题:两个地方都可能调用,有重复风险
    • 建议移除第159行的调用只在 getLastResult 中调用(因为已经等待了 waitForAuthInit
  3. 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中的调用是必要的

总结

当前问题

  1. main_pages/components/ListPageContent.tsx 与父组件重复调用
  2. ntrp-evaluate/index.tsx 中 Intro 和 Result 组件都有重复调用

建议修复

  • 移除子组件中的重复调用
  • 统一在等待 waitForAuthInit 后的逻辑中调用