diff --git a/examples/react/src/examples/UseNodesData/UppercaseNode.tsx b/examples/react/src/examples/UseNodesData/UppercaseNode.tsx new file mode 100644 index 00000000..7f0b964f --- /dev/null +++ b/examples/react/src/examples/UseNodesData/UppercaseNode.tsx @@ -0,0 +1,24 @@ +import { memo, useEffect } from 'react'; +import { Position, NodeProps, useUpdateNodeData, Handle, useHandleConnections, useNodesData } from '@xyflow/react'; + +function UppercaseNode({ id }: NodeProps) { + const connections = useHandleConnections({ + handleType: 'target', + }); + const nodeData = useNodesData<{ text: string }>(connections[0]?.source); + const updateNodeData = useUpdateNodeData(); + + useEffect(() => { + updateNodeData(id, { text: nodeData?.text.toUpperCase() }); + }, [nodeData]); + + return ( +
+ +
uppercase transform
+ +
+ ); +} + +export default memo(UppercaseNode); diff --git a/examples/react/src/examples/UseNodesData/index.tsx b/examples/react/src/examples/UseNodesData/index.tsx index 67e68a2f..040ca35a 100644 --- a/examples/react/src/examples/UseNodesData/index.tsx +++ b/examples/react/src/examples/UseNodesData/index.tsx @@ -13,10 +13,12 @@ import { import TextNode from './TextNode'; import ResultNode from './ResultNode'; +import UppercaseNode from './UppercaseNode'; const nodeTypes = { text: TextNode, result: ResultNode, + uppercase: UppercaseNode, }; const initNodes: Node[] = [ @@ -26,8 +28,15 @@ const initNodes: Node[] = [ data: { text: 'hello', }, - position: { x: 0, y: 0 }, + position: { x: -100, y: -50 }, }, + { + id: '1a', + type: 'uppercase', + data: {}, + position: { x: 100, y: 0 }, + }, + { id: '2', type: 'text', @@ -47,8 +56,13 @@ const initNodes: Node[] = [ const initEdges: Edge[] = [ { - id: 'e1-3', + id: 'e1-1a', source: '1', + target: '1a', + }, + { + id: 'e1a-3', + source: '1a', target: '3', }, {