From 2a2bb4d28e21c3b0b98580d131c86953cb9d0de6 Mon Sep 17 00:00:00 2001 From: fengxiangdebaozi <10845145+fengxiangdebaozi@user.noreply.gitee.com> Date: Mon, 15 Jun 2026 11:37:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(sandbox):=20=E4=BF=AE=E5=A4=8D=20Markdown?= =?UTF-8?q?=20=E7=BC=96=E8=BE=91=E4=BF=9D=E5=AD=98=E5=90=8E=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E8=A2=AB=E9=87=8D=E7=BD=AE=E5=9B=9E=E5=8E=9F=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit useArtifactContent 查询键含 publicShareCode(5 元素),而 onSuccess 的 setQueryData 仅用 4 元素,精确哈希不匹配导致写入幽灵缓存、真实缓存 仍为旧值;保存后 useEffect 据旧 content 重置 draftContent。改用 setQueriesData 前缀匹配命中真实缓存。 Co-Authored-By: Claude Opus 4.8 (1M context) --- frontend-web/src/core/artifacts/hooks.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend-web/src/core/artifacts/hooks.ts b/frontend-web/src/core/artifacts/hooks.ts index 45419ff3..0e9818ac 100644 --- a/frontend-web/src/core/artifacts/hooks.ts +++ b/frontend-web/src/core/artifacts/hooks.ts @@ -133,8 +133,18 @@ export function useUpdateArtifactContent() { return useMutation({ mutationFn: updateArtifactContent, onSuccess: (content, variables) => { - queryClient.setQueryData( - ["artifact", variables.filepath, variables.threadId, variables.isMock], + // useArtifactContent 的查询键带第 5 个元素 publicShareCode,这里用前缀 + // 过滤(setQueriesData)匹配,避免精确键缺少 publicShareCode 写到幽灵缓存、 + // 导致保存后内容被旧缓存重置回原值。 + queryClient.setQueriesData( + { + queryKey: [ + "artifact", + variables.filepath, + variables.threadId, + variables.isMock, + ], + }, { content, url: undefined,