| | |
| | | * 「行程结束」入场:与上面的 shouldPlayEvaluateEnter 完全同理(渲染期捕捉上升沿 → 置类 → 按动画时长清类)。 |
| | | * 父层 playFinishedEnter 仅在真实 live 跃迁进入行程结束(8)时为真;恢复态(从首页进入即已是结束态)恒为 false, |
| | | * 此时不加 calling-car--finished-enter 类,结束态背景卡与里程直接显示最终态、不再弹起。 |
| | | * 背景卡升起 finished-bg-rise 时长 1s、里程渐显 delay 450ms + 700ms,取最长 ≈1.15s 后清类。 |
| | | * 背景卡与里程升起:延迟 700ms + 时长 1s = 1700ms 才结束,故清类须 ≥1700ms,否则会中途移除类 |
| | | * 导致动画被截断、瞬间 snap 到最终态(观感为「快结束时卡顿」)。取 1850ms 留缓冲。 |
| | | */ |
| | | const [shouldPlayFinishedEnter, setShouldPlayFinishedEnter] = useState(false); |
| | | const prevPlayFinishedRef = useRef(false); |
| | |
| | | useEffect(() => { |
| | | if (!shouldPlayFinishedEnter) return; |
| | | if (finishedEnterTimerRef.current) clearTimeout(finishedEnterTimerRef.current); |
| | | finishedEnterTimerRef.current = setTimeout(() => setShouldPlayFinishedEnter(false), 1200); |
| | | finishedEnterTimerRef.current = setTimeout(() => setShouldPlayFinishedEnter(false), 1850); |
| | | return () => { |
| | | if (finishedEnterTimerRef.current) clearTimeout(finishedEnterTimerRef.current); |
| | | }; |