Ver código fonte

🐛 fix(login): 修复用户信息存储和缓存更新问题

- 将用户信息通过JSON.stringify处理后再存储到本地缓存
- 添加queryClient手动更新currentUser缓存的逻辑,确保登录后用户状态正确更新
yourname 3 meses atrás
pai
commit
c0eb75550e
1 arquivos alterados com 9 adições e 3 exclusões
  1. 9 3
      mini/src/pages/login/wechat-login.tsx

+ 9 - 3
mini/src/pages/login/wechat-login.tsx

@@ -6,10 +6,12 @@ import Navbar from '@/components/ui/navbar'
 import { isWeapp } from '@/utils/platform'
 import { Button } from '@/components/ui/button'
 import { authClient } from '@/api'
+import { useQueryClient } from '@tanstack/react-query'
 
 export default function WechatLogin() {
   const [loading, setLoading] = useState(false)
   const [isWechatEnv, setIsWechatEnv] = useState(true)
+  const queryClient = useQueryClient()
 
   // 设置导航栏标题并检查平台
   useEffect(() => {
@@ -77,15 +79,19 @@ export default function WechatLogin() {
         const { token, user, isNewUser } = await response.json()
         
         // 4. 保存token和用户信息
-        Taro.setStorageSync('userInfo', user)
+        Taro.setStorageSync('userInfo', JSON.stringify(user))
         Taro.setStorageSync('mini_token', token) // 兼容RPC client的token存储
-        
+
+        // 5. 手动更新认证状态缓存
+        // 由于微信登录不是通过 useAuth 的 login mutation,需要手动更新缓存
+        queryClient.setQueryData(['currentUser'], user)
+
         Taro.showToast({
           title: isNewUser ? '注册成功' : '登录成功',
           icon: 'success',
           duration: 1500
         })
-        
+
         // 跳转到首页
         setTimeout(() => {
           Taro.switchTab({ url: '/pages/home/index' })