-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
曼哈顿路由框选拖拽卡顿如何优化? #4204
Comments
梳理了下流程,更新节点的位置,会更新相关边的视图
const effectedEdges = this.getEffectedEdges(view)
effectedEdges.forEach((edge) => {
this.requestViewUpdate(edge.view, edge.flag, options, priority, false)
}) 频繁触发 加上 100ms 防抖,虽说不卡顿了,但是拖拽过程边又不跟手 |
我是按照我们的业务规则实现的路由,但是也遇到这个问题。我现在的处理手段目前有两个。
|
@cuidong626 我发现拖动过程节点也在一直计算、移动,比较影响性能,在大量节点的情况下还是挺卡的,目前我又换了一种方式,单选节点拖拽时按照默认的更新,多选拖拽的时候等到鼠标松开再更新位置。这种能比未做任何优化的性能提升 7 倍。 |
selection 插件好像有这种功能属性,不是实时拖拽的。following 属性,不知道2.0有没有用处 |
我现在的逻辑场景是,利用selection做框选处理、选中处理(不展示选中样式),选中状态用transform进行样式展示。 |
看了下 2.0 文档没有任何 Selection 的边框移动太卡了我也没用,我是修改 NodeView 的更新以及在 Selection 插件中监听鼠标的按下以及松开,也方便实现 draw.io 那种超出一定数量节点再批量更新的效果。 |
我采取的方案是 拖拽过程中 先删除edge, 当拖拽完成后 再将线添加回来 |
问题描述
20个节点+20个曼哈顿路由连线拖拽过程卡顿非常明显,应该是拖拽过程频繁计算路径导致的
重现链接
x6-example-features
重现步骤
框选拖拽多个曼哈顿路由连线,卡顿
预期行为
不要这么卡顿,有没有什么方法优化?
平台
屏幕截图或视频(可选)
No response
补充说明(可选)
No response
The text was updated successfully, but these errors were encountered: