G6 icon indicating copy to clipboard operation
G6 copied to clipboard

[Bug]: node是 图片节点的时候,src使用在线地址,如果折叠节点再展开就报错了

Open 7hao123 opened this issue 6 months ago • 9 comments

Describe the bug / 问题描述

报这个错误Error in /turbo_modules/@antv/[email protected]/dist/index.js (231:56) Cannot read properties of undefined (reading 'src'),

Reproduction link / 复现链接

https://stackblitz.com/edit/react-ygkbuwfk?file=index.js

Steps to Reproduce the Bug or Issue / 重现步骤

点一下折叠再展开就会触发。

Version / 版本

🆕 5.x

OS / 操作系统

  • [ ] macOS
  • [x] Windows
  • [ ] Linux
  • [ ] Others / 其他

Browser / 浏览器

  • [x] Chrome
  • [ ] Edge
  • [ ] Firefox
  • [ ] Safari (Limited support / 有限支持)
  • [ ] IE (Nonsupport / 不支持)
  • [ ] Others / 其他

7hao123 avatar Aug 15 '25 10:08 7hao123

我记得这个问题之前有解决过的 @wang1212 帮忙看看。

hustcc avatar Aug 15 '25 10:08 hustcc

这个有业务反馈过,还没有修复,可以采用临时方案,传递 image 实例来解决

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2025年08月15日 18:19 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [antvis/G6] [Bug]: node是 图片节点的时候,src使用在线地址,如果折叠节点再展开就报错了 (Issue #7338) | hustcc left a comment (antvis/G6#7338)

我记得这个问题之前有解决过的 @wang1212 帮忙看看。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

wang1212 avatar Aug 15 '25 10:08 wang1212

这个有业务反馈过,还没有修复,可以采用临时方案,传递 image 实例来解决

似乎不是类似的问题,通过打断点看了下,是 G6 的解析问题?

Image

缺少 src 属性。

@Aarebecca 可以看看

wang1212 avatar Aug 18 '25 02:08 wang1212

不光是在线图片地址,本地一样会报错

BleachenV avatar Aug 18 '25 11:08 BleachenV

https://github.com/antvis/G6/blob/79b41a36c7387e17c14311a76a35cf69794345ef/packages/g6/src/runtime/element.ts#L713-L727

createElements 所有图片节点的 src 都是 undefined (出现问题的地方) computeStyle 计算样式 updateElements 再去更新,src 有正确的值

所以感觉简单点的解决方案 那就是加个1x1的gif先临时占位(虽然,但是感觉并不太可取)。

要么就重构一下这里的逻辑,但后者就比较麻烦了。

lyw405 avatar Aug 20 '25 10:08 lyw405

@lyw405 这个看起来不应该是 Image 组件 src 不合法的时候,不渲染吗?

hustcc avatar Aug 20 '25 11:08 hustcc

@lyw405 这个看起来不应该是 Image 组件 src 不合法的时候,不渲染吗?

不是不合法,准确来说是不存在。例如在源码中createElements的时候,搞个空字符串,此时底层Image会保错src不合法,但是不会中断整个g6的流程。 所以可以说是Image底层对src不存在的时候兜底处理不足,但是createElements时直接给Image传空的,多少感觉也有些问题。

lyw405 avatar Aug 20 '25 12:08 lyw405

@hustcc Image

尝试修改执行流程,把计算样式放到前面就可以正常的渲染和展开收缩的,可能是我哪里没考虑到。

lyw405 avatar Aug 21 '25 01:08 lyw405

这个问题现在解决了吗,我也遇到了这个问题=

chwithld avatar Aug 27 '25 02:08 chwithld