82 lines
3.1 KiB
Markdown
82 lines
3.1 KiB
Markdown
# 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 后的逻辑中调用
|
||
|