useEdgesState()
此钩子可以轻松原型化受控流,你可以在其中管理 ReactFlowInstance
之外的节点和边缘的状态。你可以将其视为带有附加辅助回调的 React 的 useState
钩子。
¥This hook makes it easy to prototype a controlled flow where you manage the
state of nodes and edges outside the ReactFlowInstance
. You can think of it
like React’s useState
hook with an additional helper callback.
import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react';
const initialNodes = [];
const initialEdges = [];
export default function () {
const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);
const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);
return (
<ReactFlow
nodes={nodes}
edges={edges}
onNodesChange={onNodesChange}
onEdgesChange={onEdgesChange}
/>
);
}
签名
¥Signature
Parameters:Name | Type | Default |
---|---|---|
initialEdges | EdgeType[] |
[edges: EdgeType[], setEdges: Dispatch<SetStateAction<EdgeType[]>>, onEdgesChange: OnEdgesChange<EdgeType>]
-
edges
: The current array of edges. You might pass this directly to theedges
prop of your<ReactFlow />
component, or you may want to manipulate it first to perform some layouting, for example. -
setEdges
: A function that you can use to update the edges. You can pass it a new array of edges or a callback that receives the current array of edges and returns a new array of edges. This is the same as the second element of the tuple returned by React’suseState
hook. -
onEdgesChange
: A handy callback that can take an array ofEdgeChanges
and update the edges state accordingly. You’ll typically pass this directly to theonEdgesChange
prop of your<ReactFlow />
component.
TypeScript
此钩子接受自定义边缘类型的泛型类型参数。有关更多信息,请参阅此 我们 TypeScript 指南中的部分。
¥This hook accepts a generic type argument of custom edge types. See this section in our TypeScript guide for more information.
const nodes = useEdgesState<CustomEdgeType>();
注释
¥Notes
-
创建此钩子是为了使原型设计更容易,使我们的文档示例更清晰。虽然在生产中使用这个钩子是可以的,但在实践中,你可能希望使用更复杂的状态管理解决方案,如 Zustand 。
¥This hook was created to make prototyping easier and our documentation examples clearer. Although it is OK to use this hook in production, in practice you may want to use a more sophisticated state management solution like Zustand instead.