エッジのアニメーション
React Flowはデフォルトのエッジタイプにシンプルな組み込みアニメーションを提供していますが、カスタムエッジを使用することで、より高度なアニメーションを作成できます。以下は、エッジパスがさまざまな方法で使用される例です。
SVG要素のアニメーション
<animateMotion />
要素を使用して、パスに沿ってSVG要素をアニメーション化できます。この例では、エッジパスに沿って円をアニメーション化するカスタムエッジを作成します。
他のノードのアニメーション
SVG以外にもエッジに沿ってアニメーション化したい場合は、Web Animations APIを使用できます。offsetPath
プロパティとoffsetDistance
プロパティをアニメーション化することで、フロー内の別のノードをエッジパスに沿ってアニメーション化する方法を示す例です。
この例では、いくつかの重要な詳細に注意する必要があります。
-
アニメーション実行中は、アニメーション化されたノードの
draggable
プロパティがfalse
に設定されています。これにより、ユーザーがノードを移動してアニメーションパスを壊すことがなくなります。 -
アニメーションパスとアニメーション自体は、個別の
useEffect
フックで設定されています。これにより、エッジパスが再計算された場合でも(たとえば、ソースノードまたはターゲットノードがドラッグされた場合)、アニメーションはスムーズに再生され続けます。