From 955c9066fb99669df5ab5050c4125bbb892ce0ce Mon Sep 17 00:00:00 2001
From: hejianhao <15708179461@qq.com>
Date: 星期五, 17 四月 2026 22:57:38 +0800
Subject: [PATCH] fix: 修复行程状态切换时定时器与地图视角的竞争条件
---
src/robotaxi/pages/begin-route/components/calling-car-modules/use-trip-countdown.ts | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/src/robotaxi/pages/begin-route/components/calling-car-modules/use-trip-countdown.ts b/src/robotaxi/pages/begin-route/components/calling-car-modules/use-trip-countdown.ts
index eec4cd5..a5844c0 100644
--- a/src/robotaxi/pages/begin-route/components/calling-car-modules/use-trip-countdown.ts
+++ b/src/robotaxi/pages/begin-route/components/calling-car-modules/use-trip-countdown.ts
@@ -36,6 +36,7 @@
const pickupTimerRef = useRef<any>(null);
const finishTimerRef = useRef<any>(null);
const countdownFinishedRef = useRef(false);
+ const pickupTripStatusRef = useRef(tripStatus);
const pickupEndTimeRef = useRef<number | null>(null);
const finishEndTimeRef = useRef<number | null>(null);
const lastFareOrderIdRef = useRef<string | null>(null);
@@ -108,12 +109,21 @@
}, [tripStatus]);
useEffect(() => {
+ pickupTripStatusRef.current = tripStatus;
+ }, [tripStatus]);
+
+ useEffect(() => {
if (tripStatus !== 5) {
clearPickupTimer();
return;
}
const runPickupTick = () => {
+ // 防止状态已切换后,旧定时回调仍触发取消逻辑
+ if (pickupTripStatusRef.current !== 5) {
+ clearPickupTimer();
+ return;
+ }
const remaining = getRemainingSeconds(pickupEndTimeRef.current);
if (remaining !== null && remaining <= 0) {
if (!countdownFinishedRef.current) {
--
Gitblit v1.7.1