参考钩子

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: 字符串 | 字符串[]) => void
使用此函数告诉 React Flow 更新您以编程方式更改的一个或多个节点的内部状态。

注意