建议先阅读 在 React 项目中引入 GG-Editor 编辑可视化流程,这篇文章写得很好很全面,适合上手。

下面是我在项目中遇到的需求和对应的解决办法。

官方文档

先上地址:官方文档

找官方文档太难了。
官网上没有,github上的文档只有安装说明,并没有API之类的东西。
直接搜找到了很多相关文章,但是发现很多里面的东西都不生效,比如参考文档中很多事件不生效。
在不知所措的怀疑蚂蚁金服和自己的时候,找到了官方文档。其实是某个版本的gg-editor的说明文档。但是亲测里面的东西都是有效的。
[不理解为什么最新版本的gg-editor里面没有详细的说明文档了]

需求:拖拽结点进页面时做操作

问题1: 第一次拖拽到画布上时,网关类型弹出不同弹窗

本来想用onDrop,但是不行——初次拖到画布上时,onDrop的监听函数的参数e里没有任何信息。

解决:用onAfterChange

问题2:拖动节点到画布上,节点会自动消失

背景:拖动节点到画布上,会出现弹窗。填写节点的相关信息之后,点击“确定”关闭弹窗。发现此时该节点也会消失。
分析:这是因为Flow组件的data参数改变了。

<Flow data={{...datas}} />

参数data只是指定的初始数据,而且每次添加删除节点都不需要手动修改data。gg-editor内部会处理。按道理来讲不会出现这种问题。
可是假如是这么写的代码,那么每次重新render时,传给Flow组件的都是一个新的对象。Flow会在点击“确定”之后再重现渲染一次

问题3:如果Flow有初始化data,拖节点进画布,关掉弹窗后,新拖进来的结点会消失

分析:
在没有弹窗的时候拖节点是没问题的,可是点击确定关闭弹窗的时候原来的结点却消失了。这是因为此时改变了data这个对象,所以gg-editor认为需要重新渲染了。可是这个时候,并没有把新加的节点的信息放在data里面。

问题4:can’t read read of undefined

本来是在Toolbar的didMount中调用的。结果报错can’t read read of undefined。这是因为当时画布还没画好。所以单独封装了Flow组件,在Flow组件的didMount中调用。

调研的时候,所有功能都要走一遍。不要想当然,也不要偷懒。像这次,包括初始数据的加载,还有刚拖到页面的时候怎么区分是哪个节点,这两个问题没有提前弄清楚。还好不麻烦。
调研是自己要做的,所以一定要认真负责。

Tips:

propsAPI是可以导出的
本来是只能是Flow的子组件结合使用,可是这样的限制太大了。而且调其中的方法的时候有时候编辑器还没加载好,所以会报错。
然后利用子组件先didMount然后是父组件,这个特性。在didMount的时候把这个导出,就可以在父组件的didMount中使用了。

propsAPI
应该是封装了具体的图的一些信息。所以,每次应该重新设置一下值。不能使用同一个。
我还以为只是一个方法的接口。
withPropsAPI包裹的组件必须是GGEditor的子组件

在这里插入图片描述
graph内部是按照item.id执行逻辑的。比如连线时默认给edge的source和target。
item.id是gg-editor自动生成的。看api可知用户只能修改model,并不能修改item.id

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐