From 294894ea567f221699bb43efeefae30dbe23c021 Mon Sep 17 00:00:00 2001 From: zly Date: Tue, 2 Jun 2026 11:59:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=84=E7=90=86=E9=A2=91=E7=B9=81?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AF=BC=E8=87=B4=E8=8A=82=E7=82=B9=E9=97=AA?= =?UTF-8?q?=E7=83=81=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useFlowCallbacks.ts | 5 +++++ src/hooks/useFlowEditorState.ts | 14 +++++++++++++- src/pages/ideContainer/index.tsx | 2 -- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/hooks/useFlowCallbacks.ts b/src/hooks/useFlowCallbacks.ts index d5a037f..91b53c1 100644 --- a/src/hooks/useFlowCallbacks.ts +++ b/src/hooks/useFlowCallbacks.ts @@ -548,8 +548,13 @@ export const useFlowCallbacks = ( // 实时更新 canvasDataMap const updateCanvasDataMapEffect = useCallback(() => { const appKey = getCurrentFlowAppKey(); + const { appRuntimeData } = store.getState().ideContainer; + const isCurrentAppRunning = + appKey && appRuntimeData[appKey]?.isRunning; + if ( appKey && + !isCurrentAppRunning && shouldPersistCanvas({ nodes, edges }) ) { updateCanvasDataMapDebounced( diff --git a/src/hooks/useFlowEditorState.ts b/src/hooks/useFlowEditorState.ts index 7acb218..7fc31c5 100644 --- a/src/hooks/useFlowEditorState.ts +++ b/src/hooks/useFlowEditorState.ts @@ -61,7 +61,9 @@ export const useFlowEditorState = (initialData?: any, readOnly?: boolean) => { Object.values(initialData.components).some((comp: any) => comp.status); setNodes((prevNodes) => { - return prevNodes.map((node) => { + let hasChanges = false; + + const nextNodes = prevNodes.map((node) => { // 如果是只读模式(历史实例查看),优先使用节点自身的历史状态 // 如果是正常运行模式,只使用运行时状态 let nodeStatus = 'waiting'; @@ -80,6 +82,14 @@ export const useFlowEditorState = (initialData?: any, readOnly?: boolean) => { showStatus = currentAppIsRunning; } + if ( + node.data.status === nodeStatus && + node.data.isStatusVisible === showStatus + ) { + return node; + } + + hasChanges = true; return { ...node, data: { @@ -89,6 +99,8 @@ export const useFlowEditorState = (initialData?: any, readOnly?: boolean) => { }, }; }); + + return hasChanges ? nextNodes : prevNodes; }); }, [ appRuntimeData, diff --git a/src/pages/ideContainer/index.tsx b/src/pages/ideContainer/index.tsx index e52e480..57186e3 100644 --- a/src/pages/ideContainer/index.tsx +++ b/src/pages/ideContainer/index.tsx @@ -4,7 +4,6 @@ import { updateSocketId, updateNodeStatus, updateEventListOld, - resetNodeStatus, updateRuntimeId, updateIsRunning } from '@/store/ideContainer'; @@ -149,7 +148,6 @@ function IDEContainer() { const reconnectRuntime = async () => { try { - dispatch(resetNodeStatus()); dispatch(updateRuntimeId(reconnectRequest.instanceId)); dispatch(updateIsRunning(true));