リファレンスフック

useUpdateNodeInternals

GitHub のソース

ノードにハンドルをプログラムで追加または削除したり、ノードのハンドルの位置を更新したりする場合は、このフックを使用して React Flow にそのことを知らせる必要があります。 これにより、ノードの内部ディメンションが更新され、必要に応じてキャンバス上のハンドルが適切に再配置されます。

import { useCallback, useState } from 'react';
import { Handle, useUpdateNodeInternals } from '@xyflow/react';
 
export default function RandomHandleNode({ id }) {
  const updateNodeInternals = useUpdateNodeInternals();
  const [handleCount, setHandleCount] = useState(0);
  const randomizeHandleCount = useCallback(() => {
    setHandleCount(Math.floor(Math.random() * 10));
    updateNodeInternals(id);
  }, [id, updateNodeInternals]);
 
  return (
    <>
      {Array.from({ length: handleCount }).map((_, index) => (
        <Handle
          key={index}
          type="target"
          position="left"
          id={`handle-${index}`}
        />
      ))}
 
      <div>
        <button onClick={randomizeHandleCount}>Randomize handle count</button>
        <p>There are {handleCount} handles on this node.</p>
      </div>
    </>
  );
}

シグネチャ

#戻り値
(nodeId: string | string[]) => void
プログラムで変更した1つ以上のノードの内部状態を更新するように React Flow に指示するには、この関数を使用します。

注記