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