@小小酥梨(xiaoxiaosuli)

G2 在经过数据处理之后,所有的具体图形绘制逻辑都在 Element 中承载。

每个 Element 都有他的 id,在 G2 更新的时候,会根据 id 去匹配和 diff,来决定 element 是做 更新、删除、新增中的哪一个逻辑。

现在的代码逻辑:

问题:

  1. 逻辑不清晰,本身是一个很纯净的 diff,写出来完全看不懂
  2. 新增、更新 和 销毁 的逻辑是分割开的

解法

  • 增加 diff 逻辑,产出就是 remvoed、added、updated
  • 然后去做对应的逻辑

参考:https://github.com/antvis/G2/blob/v5-tmp/src/geometry/geometry.ts#L494