<svg width="100%">
<circle
cx={circle.cx}
cy={circle.cy}
r="0.5rem"
/>
</svg>
startPoint : 시작점
const [startPoint, setStartPoint] = React.useState('');
lineList : 선
interface Point {
startPoint: string;
endPoint: string;
}
const [lineList, setLineList] = React.useState<Point[]>([]);
setStartPoint(’’)setLineList(startPoint, endPoint)const handlePointClick = (e: DataMouseEvent<SVGCircleElement>) => {
const { id, type } = e.target.dataset;
if (type === 'top') {
if (lineList.every(line => line.startPoint !== id) && startPoint !== id) {
setStartPoint(id);
return;
}
setStartPoint('');
}
if (startPoint && type === 'bottom') {
if (lineList.every(line => line.endPoint !== id)) {
setLineList([...lineList, { startPoint, endPoint: id }]);
}
setStartPoint('');
}
};
// ..
return (
<svg>
<circle
// ..
onClick={handlePointClick}
/>
</svg>
)
3-2번에서 연결한 lineList를 바탕으로 선을 그린다.
<line
x1={startPoint?.cx}
y1={startPoint?.cy}
x2={endPoint?.cx}
y2={endPoint?.cy}
stroke={theme.palette.primary.main}
strokeWidth="0.1rem"
/>