@@ -99,7 +99,7 @@ const XFlow: FC<FlowProps> = memo(props => {
9999 connectionLineComponent,
100100 } = props ;
101101 const nodeEditorRef = useRef ( null ) ;
102- const { copyNode, pasteNodeSimple } = useFlow ( ) ;
102+ const { copyNode, pasteNodeSimple, deleteNode } = useFlow ( ) ;
103103 const { undo, redo } = useTemporalStore ( ) ;
104104 const isNodeCopyingRef = useRef ( false ) ; // 是否正在进行节点复制
105105 const lastClickedNodeRef = useRef ( false ) ; // 最后一次点击是否是节点
@@ -437,30 +437,35 @@ const XFlow: FC<FlowProps> = memo(props => {
437437 message . warning ( `${ blockedNodes . map ( n => n . data ?. title || n . id ) . join ( ', ' ) } 节点不允许删除!` ) ;
438438 return false ;
439439 }
440- return true
440+ if ( nodesToDelete ?. length ) {
441+ setOpenPanel ( false ) ;
442+ }
443+ return true ;
441444 } }
442445 onConnect = { onConnect }
443446 onNodesChange = { changes => {
444- changes . forEach ( change => {
445- if ( change . type === 'remove' ) {
446- record ( ( ) => {
447- onNodesChange ( [ change ] ) ;
448- } ) ;
449- } else {
450- onNodesChange ( [ change ] ) ;
451- }
452- } ) ;
447+ const removeChanges = changes . filter ( c => c . type === 'remove' ) ;
448+ const otherChanges = changes . filter ( c => c . type !== 'remove' ) ;
449+ // 处理删除操作:使用与右键菜单相同的 deleteNode 方法
450+ if ( removeChanges . length > 0 ) {
451+ removeChanges . forEach ( change => {
452+ if ( 'id' in change ) {
453+ deleteNode ( change . id ) ;
454+ // 如果删除的是当前激活的节点,关闭面板
455+ if ( change . id === activeNode ?. id ) {
456+ setActiveNode ( null ) ;
457+ }
458+ }
459+ } ) ;
460+ }
461+
462+ // 其他操作使用 ReactFlow 的默认处理
463+ if ( otherChanges . length > 0 ) {
464+ onNodesChange ( otherChanges ) ;
465+ }
453466 } }
454467 onEdgesChange = { changes => {
455- changes . forEach ( change => {
456- if ( change . type === 'remove' ) {
457- record ( ( ) => {
458- onEdgesChange ( [ change ] ) ;
459- } ) ;
460- } else {
461- onEdgesChange ( [ change ] ) ;
462- }
463- } ) ;
468+ onEdgesChange ( changes ) ;
464469 } }
465470 onEdgeMouseEnter = { ( _ , edge : any ) => {
466471 if ( ! edge . style . stroke || edge . style . stroke === '#c9c9c9' ) {
@@ -472,8 +477,8 @@ const XFlow: FC<FlowProps> = memo(props => {
472477 getUpdateEdgeConfig ( edge , '#c9c9c9' ) ;
473478 }
474479 } }
475- onNodesDelete = { ( ) => {
476- setActiveNode ( null ) ;
480+ onNodesDelete = { ( nodes ) => {
481+ // setActiveNode(null);
477482 } }
478483 onNodeClick = { ( event , node ) => {
479484 onNodeClick && onNodeClick ( event , node ) ;
0 commit comments