Skip to content

Commit f40aa28

Browse files
committed
chore: 删除节点
1 parent cf3f2fd commit f40aa28

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

packages/x-flow/src/components/CustomNode/index.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export default memo((props: any) => {
1818
widgets[`${capitalize(type)}Node`] || widgets['CommonNode'];
1919
const [isHovered, setIsHovered] = useState(false);
2020
const reactflow = useReactFlow();
21-
const { addNodes, addEdges, copyNode, pasteNode, mousePosition } = useStore(
21+
const { addNodes, addEdges, copyNode, pasteNode, deleteNode, mousePosition } = useStore(
2222
(state: any) => ({
2323
nodes: state.nodes,
2424
edges: state.edges,
@@ -27,6 +27,7 @@ export default memo((props: any) => {
2727
addEdges: state.addEdges,
2828
copyNode: state.copyNode,
2929
pasteNode: state.pasteNode,
30+
deleteNode: state.deleteNode,
3031
onEdgesChange: state.onEdgesChange,
3132
}),
3233
shallow
@@ -77,6 +78,10 @@ export default memo((props: any) => {
7778
pasteNode(id)
7879
}, [pasteNode]);
7980

81+
const handleDeleteNode = useCallback(() => {
82+
deleteNode(id)
83+
}, [pasteNode]);
84+
8085
return (
8186
<div
8287
className={classNames('xflow-node-container', {
@@ -107,6 +112,11 @@ export default memo((props: any) => {
107112
key: 'paste',
108113
onClick: handlePasteNode,
109114
},
115+
{
116+
label: '删除',
117+
key: 'delete',
118+
onClick: handleDeleteNode,
119+
},
110120
],
111121
}}
112122
trigger={['click', 'contextMenu']}

packages/x-flow/src/models/store.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export type FlowState = {
4141
setEdges: (edges: Edge[]) => void;
4242
addNodes: (nodes: FlowNode[]| FlowNode) => void;
4343
addEdges: (edges: Edge[] | Edge) => void;
44+
deleteNode: (nodeId: string) => void;
4445
copyNode: (nodeId: string) => void;
4546
pasteNode: (nodeId: string) => void;
4647
setLayout: (layout: 'LR' | 'TB') => void;
@@ -142,6 +143,11 @@ const createStore = (initProps?: Partial<FlowProps>) => {
142143
});
143144
}
144145
},
146+
deleteNode: (nodeId) => {
147+
set({
148+
nodes: get().nodes.filter((node) => node.id !== nodeId),
149+
});
150+
},
145151
}),
146152
{
147153
// nodes 和 edges 是引用类型,所以使用深比较

0 commit comments

Comments
 (0)