小程序端核销权益输入框限制
CI / verify (pull_request) Has been cancelled

This commit is contained in:
2026-07-23 00:32:09 +08:00
parent 047ffd7b16
commit cd6b82abd8
2 changed files with 48 additions and 19 deletions
+25 -10
View File
@@ -1,4 +1,4 @@
import { useCallback, useEffect, useState } from 'react';
import { useCallback, useState } from 'react';
import { View, Text } from '@tarojs/components';
import Taro, { useDidShow, usePullDownRefresh } from '@tarojs/taro';
import PageShell from '../../components/PageShell';
@@ -35,17 +35,18 @@ function usagePercent(coupon: CouponItem) {
export default function BenefitPage() {
const metrics = useNavBarMetrics();
const loggedIn = isLoggedIn();
const [loggedIn, setLoggedIn] = useState(() => isLoggedIn());
const [summary, setSummary] = useState<BenefitSummary | null>(null);
const [coupons, setCoupons] = useState<CouponItem[]>([]);
const [tab, setTab] = useState<'available' | 'history'>('available');
useDidShow(() => {
syncTabBarSelected(2);
});
const resetGuestState = useCallback(() => {
setSummary(null);
setCoupons([]);
}, []);
const loadBenefit = useCallback(() => {
if (!loggedIn) return Promise.resolve();
if (!isLoggedIn()) return Promise.resolve();
return Promise.all([
request<BenefitSummary>('/benefit/summary'),
request<CouponItem[]>('/benefit/coupons'),
@@ -55,13 +56,27 @@ export default function BenefitPage() {
setCoupons(Array.isArray(list) ? list : []);
})
.catch((e) => toast(e instanceof Error ? e.message : '加载失败'));
}, [loggedIn]);
}, []);
useEffect(() => {
void loadBenefit();
}, [loadBenefit]);
useDidShow(() => {
syncTabBarSelected(2);
const loggedInNow = isLoggedIn();
setLoggedIn(loggedInNow);
if (loggedInNow) {
void loadBenefit();
} else {
resetGuestState();
}
});
usePullDownRefresh(() => {
const loggedInNow = isLoggedIn();
setLoggedIn(loggedInNow);
if (!loggedInNow) {
resetGuestState();
Taro.stopPullDownRefresh();
return;
}
void loadBenefit().finally(() => Taro.stopPullDownRefresh());
});