G6 TreeGraph树图节点懒加载使用场景示例

 更新时间:2023年10月27日 09:15:41   作者:fuGUI  
这篇文章主要为大家介绍了G6 TreeGraph树图节点懒加载使用场景示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

场景

最近在使用G6 TreeGrap展示树形结构数据的时候,由于节点数量比较多,导致页面卡顿,甚至崩溃,最后不得不考虑懒加载的形式加载节点,每次点击节点动态的增加子级节点。

实现代码

graph.changeData(data, stack)

更新数据源,根据新的数据重新渲染视图。

参数

名称类型是否必选描述
dataObjectfalse图数据,是一个包括 nodes 和 edges 的对象。若不指定该参数,则使用当前数据重新渲染
stackbooleanfalse操作是否入 undo & redo 栈,当实例化 Graph 时设置 enableStack 为 true 时,默认情况下会自动入栈,入栈以后,就支持 undo & redo 操作,如果不需要,则设置该参数为 false 即可

用法

const data = {
  nodes: [
    {
      id: 'node1',
      label: 'node1',
    },
    {
      id: 'node2',
      label: 'node2',
    },
  ],
  edges: [
    {
      source: 'node1',
      target: 'node2',
    },
  ],
};
// graph是Graph的实例
graph.changeData(data);
// 若不指定该参数,则使用当前图上的数据重新渲染
graph.changeData();

通过对当前节点的children赋值然后调用graph.changeData()方法即可

// .....
// 节点点击事件
graph.on("node:click", function (evt) {
        const item = evt.item;
        const nodeId = item.get("id");
        console.log(nodeId);
        const model = item.getModel();
        const children = model.children;
        if (!children || children.length === 0) {
          //点击节点获取下级节点接口
          //...........
          const parentData = graph.findDataById(nodeId);
          if (!parentData.children) {
            parentData.children = [];
          }
          // 如果childData是一个数组,则直接赋值给parentData.children
          // 如果是一个对象,则使用parentData.children.push(obj)
          parentData.children = childData;
          graph.changeData();
        }
      });

以上就是G6 TreeGraph树图节点懒加载的详细内容,更多关于G6 TreeGraph树图节点懒加载的资料请关注脚本之家其它相关文章!

相关文章

  • uniapp中实现canvas超出屏幕滚动查看功能

    uniapp中实现canvas超出屏幕滚动查看功能

    亲爱的小伙伴,当你需要在uniapp中使用canvas绘制一个超长图,就类似于横向的流程图时,这个canvas超出屏幕部分拖动屏幕查看会变得十分棘手,怎么解决这个问题呢,下面小编给大家介绍uniapp中实现canvas超出屏幕滚动查看功能,感兴趣的朋友一起看看吧
    2024-03-03
  • JS 获取鼠标左右键的键值方法

    JS 获取鼠标左右键的键值方法

    这篇文章主要介绍了JS 获取鼠标左右键的键值方法,很简单,但很实用,特别是在做与用户交互相关的东西
    2014-10-10
  • Bootstrap常用组件学习(整理)

    Bootstrap常用组件学习(整理)

    这篇文章是小编日常收集整理的有关bootstrap 常用组件包括Bootstrap 面板(Panels),Bootstrap 多媒体对象(Media Object)知识,非常不错,需要的朋友参考下吧
    2017-03-03
  • 微信小程序实现利息计算器

    微信小程序实现利息计算器

    这篇文章主要为大家详细介绍了微信小程序实现利息计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • JS调试必备的5个debug技巧

    JS调试必备的5个debug技巧

    我一直使用printf调试程序,一般来说都是比较顺利,但有时候,你会发现需要更好的方法。下面几个JavaScript技巧相信你一定会觉得十分有用
    2014-03-03
  • js实现tab栏切换效果

    js实现tab栏切换效果

    这篇文章主要为大家详细介绍了js实现tab栏切换效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • 一文解析JS如何准确获取对象自身的属性

    一文解析JS如何准确获取对象自身的属性

    在 JavaScript 开发中,我们经常需要遍历对象的属性,本文将深入讲解如何准确获取对象非原型链上的属性(即“自身属性”),并结合你提供的代码,给出最佳实践,有需要的可以了解下
    2025-09-09
  • 前端学习笔记style,currentStyle,getComputedStyle的用法与区别

    前端学习笔记style,currentStyle,getComputedStyle的用法与区别

    这篇文章主要介绍了前端学习笔记style,currentStyle,getComputedStyle的用法与区别,需要的朋友可以参考下
    2016-05-05
  • JS数组在内存中的效率问题浅析

    JS数组在内存中的效率问题浅析

    用js有很久了,但都没有深究过js的数组形式,下面这篇文章主要给大家介绍了关于JS数组在内存中的效率问题,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • js实现input密码框显示/隐藏功能

    js实现input密码框显示/隐藏功能

    这篇文章主要为大家详细介绍了js实现input密码框显示和隐藏功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10

最新评论