Skip to content

[Bug Report]: DynamicGroup 分组内节点异常出组问题 #2412

Description

@tinysimple

发生了什么?

背景:DynamicGroup 插件启动限制模式 (isRestrict),且isAllowAppendIn函数设置为一直返回false(限制任意节点不能进入分组)。

问题:渲染的节点数据中存在一个分组和一个组内节点,当拖动这个组内节点再松开时,会导致该节点脱离原来的组,再次拖动时,就可以拖动到组外区域。

我这样配置的目的是:已经在分组内的元素不能出组,且其他节点不能进入到这个分组内。

问题复现地址:https://tinysimple.github.io/LogicFlowGroupBugShow/
可复现源码地址:https://github.com/tinysimple/LogicFlowGroupBugShow

Image

查看源码发现,其逻辑在 @logicflow/extension/es/dynamic-group/index.js 中的68行函数内。
现有的逻辑为:

  1. 如果该节点之前已经在 group 中了,则将其从之前的 group 移除
  2. 然后再判断这个节点是否在某个 group 范围内,如果是,则将其添加到对应的 group 中

所以当一个节点被拖动结束时,会先执行第1步的逻辑,即:将该节点从分组内移除;再执行第2步的逻辑,由于没有移动出分组的范围,所以这个节点还在这个 group 范围内,再判断 isAllowAppendIn 函数,此处我设置的该函数一直返回false,导致元素无法再进入这个分组。

我尝试对该处的源码进行改动,改动为:
1、先不将该节点从之前的 group 移除
2、如果找到这个节点在某个 group 范围内,判断是否与上一次的 group 一样,如果一样,直接return
3、再将该节点从之前的 group 移除

改动后,分组内的元素无法在第二次拖动时拖出分组区域,其他节点也无法拖进分组内。
效果地址:https://tinysimple.github.io/LogicFlowGroupFixPage/
改动后的源码地址:https://github.com/tinysimple/LogicFlowGroupFixPage

如果有需要,我可以提交PR,感谢~

logicflow/core版本

2.2.3

logicflow/extension版本

2.2.3

logicflow/engine版本

No response

浏览器&环境

Chrome

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions