參考類型

NodeProps<T>

GitHub 上的原始碼

當您實作自訂節點時,它會被包裝在一個元件中,該元件可啟用基本功能,例如選取和拖曳。您的自訂節點會接收下列 props

export type NodeProps<NodeType extends Node = Node> = {
  id: string;
  data: Node['data'];
  dragHandle?: boolean;
  type?: string;
  selected?: boolean;
  isConnectable?: boolean;
  zIndex?: number;
  positionAbsoluteX: number;
  positionAbsoluteY: number;
  dragging: boolean;
  targetPosition?: Position;
  sourcePosition?: Position;
};

用法

import { useState } from 'react';
import { NodeProps, Node } from '@xyflow/react';
 
export type CounterNode = Node<
  {
    initialCount?: number;
  },
  'counter'
>;
 
export default function CounterNode(props: NodeProps<CounterNode>) {
  const [count, setCount] = useState(props.data?.initialCount ?? 0);
 
  return (
    <div>
      <p>Count: {count}</p>
      <button className="nodrag" onClick={() => setCount(count + 1)}>
        Increment
      </button>
    </div>
  );
}

請記住透過將自訂節點新增到 nodeTypes 屬性中,來註冊您的自訂節點於您的 <ReactFlow /> 元件。

import { ReactFlow } from '@xyflow/react';
import CounterNode from './CounterNode';
 
const nodeTypes = {
  counterNode: CounterNode,
};
 
export default function App() {
  return <ReactFlow nodeTypes={nodeTypes} ... />
}

您可以在我們的自訂節點指南中閱讀更多內容。

欄位

#id
字串;
#data
T;
#dragHandle?
字串;
一個 class 名稱,可以套用至節點內的元素,這些元素可作為拖曳控制點,讓使用者透過點擊並拖曳這些元素來拖曳節點。
#type
字串;
#selected
布林值;
#isConnectable
布林值;
#zIndex
數字;
#positionAbsoluteX
數字;
#positionAbsoluteY
數字;
#dragging
布林值;
#targetPosition
Position;
#sourcePosition
Position;

注意事項

  • 如果您的自訂節點內有控制項(例如滑桿)或其他不應拖曳節點的元素,您可以將 class nodrag 新增至這些元素。這會防止預設的拖曳行為,以及點擊具有此 class 的元素時的預設節點選取行為。

    export default function CustomNode(props: NodeProps) {
      return (
        <div>
          <input className="nodrag" type="range" min={0} max={100} />
        </div>
      );
    }
  • 如果您的自訂節點內有捲動容器,您可以新增 class nowheel在自訂節點內捲動時停用預設的畫布平移行為

    export default function CustomNode(props: NodeProps) {
      return (
        <div className="nowheel" style={{ overflow: 'auto' }}>
          <p>Scrollable content...</p>
        </div>
      );
    }
  • 在建立自己的自訂節點時,您也需要記得為它們設定樣式!自訂節點沒有預設樣式,與內建節點不同,因此您可以使用任何您喜歡的樣式方法,例如styled componentstailwind