如何在Antv/G6中悬停在边缘上



我正在学习使用antv/G6进行网络可视化。我已经将鼠标悬停在正常工作的节点上(节点为钢蓝色,悬停时变为红色。(但是,悬停在边上无法正常工作。鼠标进入边的形状时,边的颜色会发生变化。但是,鼠标离开后,颜色不会返回默认值。我已经创建了一个具有四个节点和两条边的MWE。非常感谢您的帮助。谢谢代码遵循并自包含。我通常在装有BigSur、OS11.4的Macbook Pro上运行http-server,并在Chrome、Firefox和Safari中获得类似的行为

Gordon

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>01. Quick trial</title>
</head>
<body>
<div id="mountNode"></div>
<script
defer
src="https://gw.alipayobjects.com/os/antv/pkg/_antv.g6-3.7.1/dist/g6.min.js"
></script>
<script type="module" src="index.js"></script>
</body>
</html>

index.js

function convertData() {
const nodes = [{ id: "1" }, { id: "2" }, { id: "3" }, { id: "4" }];
const edges = [
{ source: "1", target: "2" },
{ source: "3", target: "4" },
];
const new_data = {
nodes: nodes,
edges: edges,
};
return new_data;
}
const setupConfiguration = () => {
const graph = new G6.Graph({
defaultNode: {
size: 50,
// selection of rects works. Circles have a halo around them. WHY?
type: "rect",
style: {
fill: "steelBlue",
stroke: "#666",
lineWidth: 0.2,
},
labelCfg: {
style: {
fill: "#fff",
}
}
},
defaultEdge: {
type: "line",
style: {
stroke: "orange",
lineWidth: 25,
},
},
labelCfg: {
autoRotate: true,
},
nodeStateStyles: {
hover: {
fill: "red",
},
},
edgeStateStyles: {
hover: {
stroke: "blue",
lineWidth: 5,
},
},
container: "mountNode",
width: 800,
height: 500,
autofit: true,
fitView: true,
});
return graph;
};
const graph = setupConfiguration();
// Mouse enter a node
graph.on("node:mouseenter", (e) => {
const nodeItem = e.item; // Get the target item
graph.setItemState(nodeItem, "hover", true);
});
// Mouse exit a node
graph.on("node:mouseleave", (e) => {
const nodeItem = e.item; // Get the target item
graph.setItemState(nodeItem, "hover", false);
});
// Mouse enter an edge
graph.on("edge:mouseenter", (e) => {
const edgeItem = e.item;
graph.setItemState(edgeItem, "hover", true);
});
// Mouse exit an edge
graph.on("node:mouseleave", (e) => {
const edgeItem = e.item;
graph.setItemState(edgeItem, "hover", false);
});
// Render
const data = convertData();
graph.data(data);
graph.render();

我发现了代码的问题:拼写错误。此代码片段:


// Mouse exit an edge
graph.on("node:mouseleave", (e) => {
const edgeItem = e.item;
graph.setItemState(edgeItem, "hover", false);
});

应该写成:

// Mouse exit an edge
graph.on("edge:mouseleave", (e) => {
const edgeItem = e.item;
graph.setItemState(edgeItem, "hover", false);
});

最新更新