fix: use replaceState instead of redirect to preserve message state
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Your Name 2026-01-31 22:25:58 +08:00
parent cd5669a8bf
commit ddd0006f1e

View File

@ -301,13 +301,10 @@ export function Chat({
// 🆕 收到消息,清除持久化状态
completeGeneration();
// 🆕 如果当前在首页,直接跳转到 /chat/${id},从数据库重新加载消息
// 这样可以确保用户消息和生成的图片都正确显示
// 🆕 更新 URL(不跳转,只改变地址栏)
if (window.location.pathname === "/" || window.location.pathname === "") {
console.log("[Chat] 图片生成完成,跳转到 /chat/" + id);
// 使用 location.href 进行完整页面跳转,确保从数据库加载消息
window.location.href = `/chat/${id}`;
return; // 跳转后不需要更新本地状态
console.log("[Chat] 更新 URL 到 /chat/" + id + "(不刷新页面)");
window.history.replaceState({}, "", `/chat/${id}`);
}
setMessages((prevMessages) => {
@ -353,11 +350,10 @@ export function Chat({
// 🆕 生成完成,清除持久化状态
completeGeneration();
// 🆕 如果当前在首页,跳转到 /chat/${id},确保消息正确加载
// 注意:对于图片生成,data-appendMessage 会先触发跳转,这里是备用逻辑
// 🆕 如果当前在首页,更新 URL(不刷新页面)
if (window.location.pathname === "/" || window.location.pathname === "") {
console.log("[Chat] onFinish: 跳转到 /chat/" + id);
window.location.href = `/chat/${id}`;
console.log("[Chat] onFinish: 更新 URL 到 /chat/" + id);
window.history.replaceState({}, "", `/chat/${id}`);
}
},
onError: (error) => {