<EdgeLabelRenderer />
エッジは SVG ベースです。より複雑なラベルをレンダリングしたい場合は、<EdgeLabelRenderer />
コンポーネントを使用して、div ベースのレンダラーにアクセスできます。このコンポーネントは、エッジの上に配置された<div />
にラベルをレンダリングするポータルです。このコンポーネントの使い方の例は、エッジラベルレンダラーの例で見ることができます。
import React from 'react';
import { getBezierPath, EdgeLabelRenderer, BaseEdge } from '@xyflow/react';
const CustomEdge = ({ id, data, ...props }) => {
const [edgePath, labelX, labelY] = getBezierPath(props);
return (
<>
<BaseEdge id={id} path={edgePath} />
<EdgeLabelRenderer>
<div
style={{
position: 'absolute',
transform: `translate(-50%, -50%) translate(${labelX}px,${labelY}px)`,
background: '#ffcc00',
padding: 10,
borderRadius: 5,
fontSize: 12,
fontWeight: 700,
}}
className="nodrag nopan"
>
{data.label}
</div>
</EdgeLabelRenderer>
</>
);
};
export default CustomEdge;
プロパティ
名前 | 型 |
---|---|
# children | React.ReactNode |
注意
<EdgeLabelRenderer />
は、デフォルトではポインタイベントを持ちません。マウスインタラクションを追加したい場合は、スタイルpointerEvents: all
を設定し、インタラクションしたいラベルまたは要素にnopan
クラスを追加する必要があります。