这是我第一次介绍react-flow。我希望创建一个自定义节点,创建后,用户可以在节点中输入信息并保存/显示它。在react-flow documentation on custom nodes中,他们有一个类似的示例,他们创建了一个TextUpdaterNode
,console.logs
是用户输入的。
我没有通过控制台记录它,而是寻找一种方法将信息保存到节点本身并在节点上显示它。例如,如果用户在输入中输入“24,male”并按“enter”键,我希望节点用该信息更新。
我可以用什么方法来做这件事?
3条答案
按热度按时间1qczuiv01#
你要做的事情还不止这些:
您可以在这里看到生动的例子:https://codesandbox.io/s/dank-waterfall-8jfcf4?file=/src/App.js
基本上,您需要:
useNodesState
;const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);
<ReactFlow nodes={nodes} edges={edges} onNodesChange={onNodesChange} />
整个代码如下所示:
此外,经过编辑:
文档中更有用的示例是:
但是你必须删除所有额外的信息(还有,你可以用它来更深入!)
7vux5j2d2#
我设法想出了一个解决方案来创建这样一个自定义节点,允许您输入,保存和显示信息。我试图包括相关的信息和代码块,我用下面。
自定义节点
我有一个
reactFlow
父组件,代码块如下,重要的是设置react flow
的自定义节点类型,并传入一个object
,其中包含要渲染的节点和边的信息。我在
node.js
的data
属性中添加了更多信息。它最终被初始化为空,但这个模板应该有助于理解我如何保存node
的信息。edge
遵循react-flow
文档中显示的标准格式。希望这对你有用!
3mpgtkmj3#
可接受的答案是关于修改组件的属性,这不是React方式。该代码可能很容易中断。还有其他方式将回调带到自定义节点。
1.将回调放入节点的数据中
这来自React流程文件:https://reactflow.dev/docs/examples/nodes/custom-node/
缺点:动态修改或创建新节点时需要格外注意
1.或动态定义自定义类型
在这种方法中,您将节点数据和行为问题分开。
我使用TypeScript是为了显示我们在此过程中操作的数据类型。
首先,使用回调扩展自定义节点属性:
然后创建提供回调的新构造函数,并使用记忆化将其放入自定义节点Map中: