antvis/G6

树图,graph.data()+graph.refresh()更新数据导致节点collapsed第二次点击失效,改如何编写代码规避该问题 #5070

easylu posted onGitHub

问题描述

需求:树图,编辑数据时,需要更新整个树图的数据,但不期望缩放、位置、定制节点和边的当前样式不变。 实现方式:更新数据使用了 graph.data(newData) + graph.refresh() 刷新;点击节点,监听是否点击的收折图标来变更节点的 collapsed属性 问题: 1、更新数据前,点击节点的收折图标都能正确收折。 2、点击节点触发数据更新(codesandbox中用点击节点主体触发数据更新) 3、然后点击收折按钮,第一次成功响应收折了,第二次点击就无效了,有看到collapsed属性更新是正确的

重现链接

https://codesandbox.io/s/flamboyant-rgb-h4c3kj?file=/index.js

重现步骤

1、更新数据前,点击节点的收折图标都能正确收折。 2、点击节点触发数据更新(codesandbox中用点击节点主体触发数据更新) 3、然后点击收折按钮,第一次成功响应收折了,第二次点击就无效了,有看到collapsed属性更新是正确的

预期行为

树图数据更新后,点击收折有效

平台

  • 操作系统: [macOS, Windows, Linux, React Native ...]
  • 网页浏览器: [Google Chrome, Safari, Firefox]
  • G6 版本: [4.5.1 ... ]

屏幕截图或视频(可选)

No response

补充说明(可选)

No response


hi @easylu, welcome!

posted by github-actions[bot] over 1 year ago

Hi @easylu, Please star this repo if you find it useful! Thanks :star:! 你好 @easylu。如果该仓库对你有用,可以 star 一下,感谢你的 :star:!

posted by github-actions[bot] over 1 year ago

更换数据应该使用 graph.changeData

不需要 graph.refresh() 这个 API 已经无用

posted by Yanyan-Wang over 1 year ago

更换数据应该使用 graph.changeData

不需要 graph.refresh() 这个 API 已经无用

graph.changeData 会重新渲染,导致拓扑树的位置、缩放、收折、点边的自定义样式状态等丢失,看API手册提到了 refresh() 只刷新数据不重新渲染才使用的。不知是否有更好的实现方式

posted by easylu over 1 year ago

This issue has been closed because it has been outdate for a long time. Please open a new issue if you still need help.

这个 issue 已经被关闭,因为 它已经过期很久了。 如果你仍然需要帮助,请创建一个新的 issue。

posted by github-actions[bot] 10 months ago

Fund this Issue

$0.00
Funded

Pull requests