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',
},
{