G6
G6 copied to clipboard
mode切换click-select错误
问题描述
1.click-slecte在mode切换时,对应的节点状态不准确 2.另想问下对v2与v3之间是否存在不兼容的情况,v2可以触发changeData事件,v3会报某某属性为null(相同的代码,在v2模板中好使,v3拷贝过去就不行)
重现链接
https://g6.antv.vision/zh/examples/net/forceDirected#basicFA2
重现步骤
1.当没有进行切换mode时,click-select,可以拿到点击节点的选中状态,
2.切换mode为create-edge时,创建边,并在创建边之后切换mode为default,节点的选中状态错误
3.添加边的时候,节点的选中状态好像就是不对
预期行为
希望mode切换时,click-select依然能拿到对应的选中状态
平台
- 操作系统: [macOS, Windows, Linux, React Native ...]
- 网页浏览器: [Google Chrome, Safari, Firefox]
- G6 版本: [4.5.1 ... ]
屏幕截图或视频(可选)
附: import G6 from '@antv/g6';
const container = document.getElementById('container'); const btnD = document.createElement('button'); const btnC = document.createElement('button'); btnD.innerText = 'default' btnC.innerText = 'create-edge' btnD.onclick = function(){ console.log(graph,'graph') graph.setMode('default') } btnC.onclick = function(){ graph.setMode('addEdge') } container.appendChild(btnD); container.appendChild(btnC); const width = container.scrollWidth; const height = container.scrollHeight || 500; const graph = new G6.Graph({ container: 'container', width, height, modes: { default: ['zoom-canvas','click-select', 'drag-canvas', 'drag-node'], addEdge:[ 'create-edge' ] }, layout: { type: 'forceAtlas2', preventOverlap: true, kr: 10, center: [250, 250], }, defaultNode: { size: 20, }, });
const data = {
nodes: [
{
"id": "Myriel"
},
{
"id": "Napoleon"
},
],
edges:[]
}
data.nodes.forEach(node => {
node.x = Math.random() * 1;
});
graph.on('node:click', e => {
const {item} = e
const state = item.hasState('selected')
console.log(state,'state')
// graph.fitView()
})
graph.data(data);
graph.render();
if (typeof window !== 'undefined') window.onresize = () => { if (!graph || graph.get('destroyed')) return; if (!container || !container.scrollWidth || !container.scrollHeight) return; graph.changeSize(container.scrollWidth, container.scrollHeight); };
补充说明(可选)
No response
我看例子表现是正确的,没感觉有什么问题啊?
2.另想问下对v2与v3之间是否存在不兼容的情况,v2可以触发changeData事件,v3会报某某属性为null(相同的代码,在v2模板中好使,v3拷贝过去就不行)
请提供在线复现 demo
尊敬的用户,您好。我们很重视您的 issue,但由于长时间没有答复,我们暂时认为这个问题已经解决。如果还有任何问题,请随时根据 issue 模版再开启新的 issue。