From d6073ec0918f2643427dcda12d7d79e15dae8190 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 1 Feb 2026 11:11:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=94=B9=E8=BF=9B=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E9=80=BB=E8=BE=91=EF=BC=8C=E7=A1=AE=E4=BF=9D?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=B6=88=E6=81=AF=E4=B8=8D=E4=B8=A2=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 简化 initialMessagesRef 初始化 2. 在 mergedMessages 中使用 baseMessages 作为后备 3. 添加 initialMessages 到 useMemo 依赖数组 Co-authored-by: Cursor --- components/chat.tsx | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/components/chat.tsx b/components/chat.tsx index 454f995e6..872f3c50b 100644 --- a/components/chat.tsx +++ b/components/chat.tsx @@ -400,13 +400,8 @@ export function Chat({ // 🆕 保存 initialMessages 的引用,防止历史消息丢失 // 当 useChat 内部状态重置时,我们仍然有初始消息 + // 注意:这个 ref 永远保持初始加载的消息,不会更新 const initialMessagesRef = useRef(initialMessages); - useEffect(() => { - // 只在初始化时设置,不在后续更新 - if (initialMessagesRef.current.length === 0 && initialMessages.length > 0) { - initialMessagesRef.current = initialMessages; - } - }, [initialMessages]); // 调试:监控聊天状态变化 & 持久化生成状态 // 使用 ref 来访问最新的 modelsData,避免依赖数组问题 @@ -1102,8 +1097,14 @@ export function Chat({ // 使用 Map 进行去重,以 ID 为键 const messageMap = new Map(); + // 🆕 确保 initialMessagesRef 有值 + // 如果 ref 是空的但 initialMessages prop 有值,使用 prop + const baseMessages = initialMessagesRef.current.length > 0 + ? initialMessagesRef.current + : initialMessages; + // 1. 首先添加初始消息(历史记录) - initialMessagesRef.current.forEach(m => { + baseMessages.forEach(m => { messageMap.set(m.id, m); }); @@ -1126,9 +1127,9 @@ export function Chat({ return timeA - timeB; }); - console.log("[Chat] Merged messages:", result.length, "(initial:", initialMessagesRef.current.length, ", current:", messages.length, ", appended:", appendedMessages.length, ")"); + console.log("[Chat] Merged messages:", result.length, "(base:", baseMessages.length, ", current:", messages.length, ", appended:", appendedMessages.length, ")"); return result; - }, [messages, appendedMessages]); + }, [messages, appendedMessages, initialMessages]); return ( <>