diff --git a/components/canvas/CanvasChatPanel.tsx b/components/canvas/CanvasChatPanel.tsx index d3f3e81a4..fe8ae060b 100644 --- a/components/canvas/CanvasChatPanel.tsx +++ b/components/canvas/CanvasChatPanel.tsx @@ -105,6 +105,7 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF const addNode = useCanvasStore((state) => state.addNode); const nodes = useCanvasStore((state) => state.nodes); const selectedNodeIds = useCanvasStore((state) => state.selectedNodeIds); + const clearSelection = useCanvasStore((state) => state.clearSelection); // 获取纯 UUID(去掉 canvas- 前缀)用于 API 调用 const rawChatId = chatId.startsWith('canvas-') @@ -533,12 +534,16 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF setInput(""); setAttachments([]); + // 🆕 清空画布选中状态(防止 useEffect 重新添加标签) + clearSelection(); + // 🆕 清空 contenteditable div 的内容 const editableDiv = textareaRef.current as HTMLDivElement | null; - if (editableDiv && editableDiv.isContentEditable) { + if (editableDiv) { editableDiv.innerHTML = ''; + console.log('[CanvasChat] 已清空输入框和选中状态'); } - }, [input, attachments, selectedModelId, sendMessage, getRecentImageUrls]); + }, [input, attachments, selectedModelId, sendMessage, getRecentImageUrls, clearSelection]); // 处理文件选择 - 上传后立即添加到画布 const handleFileSelect = async (e: React.ChangeEvent) => {