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