From 50c84fce88d29caf557b8b0caf788005859870a6 Mon Sep 17 00:00:00 2001 From: cfy666 <3087823110@qq.com> Date: Sat, 20 Jun 2026 14:32:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=AF=B9?= =?UTF-8?q?=E8=AF=9D=E9=A6=96=E6=AC=A1=E6=89=93=E5=AD=97=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E8=BE=93=E5=85=A5=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:sendTextMessage 断开状态时立即 setMessages 添加用户消息到 UI, 同时 connect() 触发连接成功后 flush useEffect 再次 setMessages 添加同一条消息, 导致消息重复、ChatPanel 渲染出两个输入区域。 修复:断开状态时只入队不立即显示,由 flush 统一处理。 --- frontend/src/hooks/useVisionSession.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/frontend/src/hooks/useVisionSession.ts b/frontend/src/hooks/useVisionSession.ts index 36d0cef..0e56558 100644 --- a/frontend/src/hooks/useVisionSession.ts +++ b/frontend/src/hooks/useVisionSession.ts @@ -438,12 +438,7 @@ export function useVisionSession(accessToken?: string | null) { // 未连接时:自动连接,消息加入待发队列 if (statusRef.current !== "connected") { pendingMessagesRef.current.push({ text: text.trim(), requestId }); - // 添加用户消息到 UI(立即反馈) - setMessages((prev) => [ - ...prev, - { role: "user", content: text.trim(), timestamp: Date.now() }], - ); - // 自动连接 WebSocket + // 自动连接 WebSocket(消息在连接成功后由 flush 统一添加到 UI,避免重复) connect(accessToken || undefined); return; }