fix: 活动详情页增加useDidShow同步登录态与手机号绑定状态,解决个人中心登录后活动页识别不到的问题

This commit is contained in:
Pine
2026-09-09 22:59:04 +08:00
parent 0643cd1a0b
commit 5c43f6d742
@@ -1,5 +1,5 @@
import { View, Text, Input, Textarea, Picker, Button, Image, RichText } from '@tarojs/components';
import Taro from '@tarojs/taro';
import Taro, { useDidShow } from '@tarojs/taro';
import { useState, useEffect } from 'react';
import { getEventDetail, submitBooking, getMyBookingForEvent, fmtEvt, fmtEvtRange, payBooking, bookingPayStatus, requestWxPay, priceText } from '@/utils/booking';
@@ -14,7 +14,7 @@ const sanitizeRichHtml = (html) => String(html || '')
const clean = attrs.replace(/\swidth\s*=\s*"[^"]*"/i, '').replace(/\sheight\s*=\s*"[^"]*"/i, '');
return `<video${clean} style="max-width:100%;height:auto;">`;
});
import { isAuthed, getUser, wxLogin, wxPhoneBind, phoneLogin, bindPhone, sendCode } from '@/utils/auth';
import { isAuthed, getUser, wxLogin, wxPhoneBind, phoneLogin, bindPhone, sendCode, getMe } from '@/utils/auth';
import { useEventShare } from '@/utils/share';
import coverWide from '@/assets/huodong-wide.png';
import Skeleton from '@/components/skeleton';
@@ -128,6 +128,27 @@ export default function EventDetail() {
}
}, [id]);
/* 每次页面显示时同步登录态与手机号绑定状态(解决 tab 切换/页面返回后登录态不同步问题)。
已登录则调用 /auth/me 从服务端拉取最新资料(含 phoneBound),避免本地缓存过期;
未登录则清空 phoneBound/myBook。鉴权失败(token 失效)静默处理,api.js 已清 token。 */
useDidShow(() => {
const nowAuthed = isAuthed();
setAuthed(nowAuthed);
if (nowAuthed) {
getMe().then((r) => {
if (r && r.ok && r.user) {
setPhoneBound(!!r.user.phoneBound);
}
}).catch(() => {});
if (id) {
getMyBookingForEvent(id).then((d) => setMyBook(d || null)).catch(() => {});
}
} else {
setPhoneBound(false);
setMyBook(null);
}
});
const gateSend = async () => {
if (!/^1\d{10}$/.test(gatePhone)) { setErr('请输入正确的 11 位手机号'); return; }
setErr('');