The issue has been closed
问题描述
node本应该跟着鼠标移动的,但不知为什么会不安定的跳来跳去

重现链接
https://codesandbox.io/s/g6-p6fq42?file=/index.js
重现步骤
node本应该跟着鼠标移动的
预期行为
node本应该跟着鼠标移动的,但不知为什么会不安定的跳来跳去
平台
- 操作系统: [ Windows ...]
- 网页浏览器: [Google Chrome]
- G6 版本: [4.8.15 ]
屏幕截图或视频(可选)
No response
补充说明(可选)
No response

@neolee6053 移动node时候,全局的节点会进行force的重新计算,如果拖拽的节点质量比较小,就会受到力的作用而发生位移。可以尝试增加 被拖拽节点的质量
posted by pomelo-nwu almost 2 years ago
原因是在你的 demo 中 dragstart 调用了 graph.layout 相当于重新启动了力导布局,这时候拖动节点,和布局过程中计算的节点位置不停相互覆盖,看起来有跳动。如果你拖动的时候不希望其他节点跟随,就不需要在 drag 各种监听里面加 graph.layout。 如果你希望拖拽完成之后跟随,避免拖拽过程中的位置冲突导致的跳动,可以在 dragstart 的时候把 force 布局停止调,dragend 的时候再触发重新布局,我按照这个逻辑改了一下:https://codesandbox.io/s/g6-forked-2qhxtp
另外,除了 force 以外其他布局是没有 forceSimulation.stop 的,可以注意下
posted by Yanyan-Wang almost 2 years ago
posted by neolee6053 almost 2 years ago 
@Yanyan-Wang 大佬如果是在拖拽过程中,node:drag 事件里面想要保持其余节点跟随(drag事件中使用了graph.layout),有什么办法可以避免像你说的 "和布局过程中计算的节点位置不停相互覆盖,看起来有跳动" 这种情况吗
posted by xiangguoFFF1 4 months ago