Files
template-10560/docs/LOGIN_STATUS_UPDATE_TEST.md
赵忠林 d770796df4 feat(dealer): 新增银行卡管理功能
- 添加银行卡管理页面和相关API
- 实现银行卡列表展示、添加、编辑和删除功能
- 优化提现页面,支持选择银行卡进行提现
- 新增 FixedButton 组件用于底部固定按钮
2025-09-06 19:37:49 +08:00

3.5 KiB
Raw Blame History

登录状态实时更新测试指南

问题描述

之前的问题是用户登录成功后Header组件的登录状态没有实时更新需要刷新页面才能看到登录状态的变化。

解决方案

修改了以下组件,使其使用 useUser Hook 来管理用户状态:

  1. Header组件 (src/pages/index/Header.tsx)
  2. UserCard组件 (src/pages/user/components/UserCard.tsx)
  3. Admin UserCard组件 (src/admin/components/UserCard.tsx)

额外优化:清理冗余代码

发现 UserCard 组件中存在冗余的数据获取逻辑:

  • useUserData Hook 已经动态获取了优惠券、礼品卡、积分、余额等数据
  • 删除了重复的本地状态:couponCount, pointsCount, giftCount
  • 删除了重复的数据获取方法:loadUserStats
  • 统一使用 useUserData 提供的数据

主要修改内容

1. Header组件修改

  • 移除了本地状态 IsLoginuserInfo
  • 使用 useUser Hook 的 user, isLoggedIn, loginUser, fetchUserInfo
  • 登录成功后调用 loginUser(token, userData) 而不是直接设置本地状态
  • 移除了 Taro.reLaunch 重新启动小程序的逻辑

2. UserCard组件修改

  • 类似的修改,使用 useUser Hook 管理状态
  • 登录成功后调用 loginUser(token, userData)

测试步骤

1. 基本登录状态更新测试

  1. 打开小程序,确保处于未登录状态
  2. 在首页Header区域应该显示"未登录"状态
  3. 点击登录按钮,完成手机号授权登录
  4. 关键测试点登录成功后Header应该立即显示用户信息无需刷新页面

2. 跨页面状态同步测试

  1. 在首页完成登录
  2. 切换到用户中心页面
  3. 检查UserCard组件是否正确显示登录状态
  4. 返回首页检查Header组件状态是否保持一致

3. 退出登录测试

  1. 在用户中心点击"退出登录"
  2. 返回首页检查Header是否立即显示未登录状态

4. 页面刷新测试

  1. 登录后刷新页面(或重新进入小程序)
  2. 检查登录状态是否正确从本地存储恢复

预期结果

修改前的问题

  • 登录成功后需要 Taro.reLaunch 重新启动小程序
  • 状态更新不实时,用户体验差

修改后的预期效果

  • 登录成功后立即更新UI状态
  • 无需重新启动小程序
  • 所有使用 useUser Hook 的组件都能实时同步状态
  • 更好的用户体验

技术实现原理

useUser Hook 的优势

  1. 集中状态管理:所有用户相关状态都在一个地方管理
  2. 自动同步所有使用该Hook的组件都会自动同步状态变化
  3. 持久化存储:自动处理本地存储的读写
  4. 错误处理:统一的错误处理逻辑

状态更新流程

用户登录 → loginUser(token, userData) → 更新Hook状态 → 所有组件自动重新渲染

注意事项

  1. 确保所有相关组件都使用useUser Hook:避免混用本地状态和全局状态
  2. 测试边界情况网络错误、token过期等情况
  3. 性能考虑useUser Hook 已经优化了不必要的重新渲染

如果测试失败

如果登录后状态仍然没有实时更新,请检查:

  1. 组件是否正确导入和使用了 useUser Hook
  2. 登录成功后是否调用了 loginUser 方法
  3. 是否还有其他地方使用了本地状态而不是Hook状态
  4. 控制台是否有错误信息

进一步优化建议

  1. 可以考虑添加加载状态指示器
  2. 可以添加登录状态变化的动画效果
  3. 可以考虑使用 React Context 进一步优化性能