<ReactFlowProvider />
<ReactFlowProvider />
コンポーネントは、コンテキストプロバイダーであり、<ReactFlow />
コンポーネントの外部からフローの内部状態にアクセスできるようにします。提供する多くのフックはこのコンポーネントが動作するために依存しています。
import { ReactFlow, ReactFlowProvider, useNodes } from '@xyflow/react'
export default function Flow() {
return (
<ReactFlowProvider>
<ReactFlow nodes={...} edges={...} />
<Sidebar />
</ReactFlowProvider>
)
}
function Sidebar() {
// This hook will only work if the component it's used in is a child of a
// <ReactFlowProvider />.
const nodes = useNodes()
return (
<aside>
{nodes.map((node) => (
<div key={node.id}>
Node {node.id} -
x: {node.position.x.toFixed(2)},
y: {node.position.y.toFixed(2)}
</div>
))}
</aside>
)
}
注記
- ルーターを使用していて、フローの状態をルート間で永続させたい場合は、
<ReactFlowProvider />
コンポーネントをルーターの*外部*に配置することが不可欠です。 - 同じページに複数のフローがある場合は、フローごとに個別の
<ReactFlowProvider />
を使用する必要があります。