From a0323064081c6051429ef1b1fb5d3986ee387e75 Mon Sep 17 00:00:00 2001 From: moklick Date: Fri, 26 Nov 2021 14:39:22 +0100 Subject: [PATCH] feat(hooks): add useNodesState and useEdgesState --- example/src/Basic/index.tsx | 18 ++++-------------- example/src/CustomNode/index.tsx | 22 ++++++---------------- example/src/FloatingEdges/index.tsx | 22 +++++----------------- example/src/Hidden/index.tsx | 16 +++++++++++++--- example/src/Layouting/index.tsx | 18 ++++++------------ example/src/NestedNodes/index.tsx | 18 ++++-------------- src/hooks/useNodesEdgesState.ts | 27 +++++++++++++++++++++++++++ src/index.ts | 1 + 8 files changed, 66 insertions(+), 76 deletions(-) create mode 100644 src/hooks/useNodesEdgesState.ts diff --git a/example/src/Basic/index.tsx b/example/src/Basic/index.tsx index c49da47b..eee70449 100644 --- a/example/src/Basic/index.tsx +++ b/example/src/Basic/index.tsx @@ -3,17 +3,15 @@ import { useState, MouseEvent, useCallback } from 'react'; import ReactFlow, { addEdge, Background, - applyNodeChanges, - applyEdgeChanges, MiniMap, Controls, Node, Edge, - NodeChange, - EdgeChange, OnLoadParams, Connection, MarkerType, + useNodesState, + useEdgesState, } from 'react-flow-renderer'; import DebugNode from './DebugNode'; @@ -108,8 +106,8 @@ const nodeTypes = { const BasicFlow = () => { const [rfInstance, setRfInstance] = useState(null); - const [nodes, setNodes] = useState(initialNodes); - const [edges, setEdges] = useState(initialEdges); + const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); + const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); const onConnect = useCallback((connection: Connection) => { setEdges((eds) => { @@ -152,14 +150,6 @@ const BasicFlow = () => { }); }; - const onNodesChange = useCallback((changes: NodeChange[]) => { - setNodes((ns) => applyNodeChanges(changes, ns)); - }, []); - - const onEdgesChange = useCallback((changes: EdgeChange[]) => { - setEdges((es) => applyEdgeChanges(changes, es)); - }, []); - return ( { - const [nodes, setNodes] = useState([]); - const [edges, setEdges] = useState([]); + const [nodes, setNodes, onNodesChange] = useNodesState([]); + const [edges, setEdges, onEdgesChange] = useEdgesState([]); + const [bgColor, setBgColor] = useState(initBgColor); useEffect(() => { @@ -103,14 +101,6 @@ const CustomNodeFlow = () => { const onConnect = (connection: Connection) => setEdges((eds) => addEdge({ ...connection, animated: true, style: { stroke: '#fff' } }, eds)); - const onNodesChange = useCallback((changes: NodeChange[]) => { - setNodes((ns) => applyNodeChanges(changes, ns)); - }, []); - - const onEdgesChange = useCallback((changes: EdgeChange[]) => { - setEdges((es) => applyEdgeChanges(changes, es)); - }, []); - return ( { - const [nodes, setNodes] = useState(initialNodes); - const [edges, setEdges] = useState(initialEdges); + const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); + const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); const onConnect = useCallback((connection: Connection) => { setEdges((eds) => addEdge(connection, eds)); }, []); - const onNodesChange = useCallback((changes: NodeChange[]) => { - setNodes((ns) => applyNodeChanges(changes, ns)); - }, []); - - const onEdgesChange = useCallback((changes: EdgeChange[]) => { - setEdges((es) => applyEdgeChanges(changes, es)); - }, []); - return (