Files
mini-programs/fetchUserInfo_analysis.md
2025-11-18 08:00:38 +08:00

82 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# fetchUserInfo 调用分析
## 调用位置汇总
### ✅ 合理的调用
1. **src/services/loginService.ts** (第160行)
- 登录成功后调用,确保用户信息同步到 store
- ✅ 合理
2. **src/main_pages/index.tsx** (第63行)
- 微信授权成功后调用
- ✅ 合理(主入口,需要确保用户信息加载)
3. **src/game_pages/list/index.tsx** (第228行)
- 在 useEffect 中,等待 waitForAuthInit 后调用
- ✅ 合理
4. **src/game_pages/detail/index.tsx** (第55行)
- 在 useEffect 中,等待 waitForAuthInit 后调用
- ✅ 合理
5. **src/game_pages/sharePoster/index.tsx** (第47行)
- 在 handleGenPoster 中,等待 waitForAuthInit 后调用
- ✅ 合理(需要用户信息生成海报)
6. **src/components/NTRPTestEntryCard/index.tsx** (第35行)
- 在 useEffect 中,等待 waitForAuthInit 后调用
- ✅ 合理
7. **src/utils/authInit.ts** (第29、39行)
- 在静默登录成功后调用
- ✅ 合理(核心授权逻辑)
8. **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 后的逻辑中调用