[Bug]: node是 图片节点的时候,src使用在线地址,如果折叠节点再展开就报错了
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 / 其他
我记得这个问题之前有解决过的 @wang1212 帮忙看看。
这个有业务反馈过,还没有修复,可以采用临时方案,传递 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: @.***>
这个有业务反馈过,还没有修复,可以采用临时方案,传递 image 实例来解决 …
似乎不是类似的问题,通过打断点看了下,是 G6 的解析问题?
缺少 src 属性。
@Aarebecca 可以看看
不光是在线图片地址,本地一样会报错
https://github.com/antvis/G6/blob/79b41a36c7387e17c14311a76a35cf69794345ef/packages/g6/src/runtime/element.ts#L713-L727
createElements 所有图片节点的 src 都是 undefined (出现问题的地方) computeStyle 计算样式 updateElements 再去更新,src 有正确的值
所以感觉简单点的解决方案 那就是加个1x1的gif先临时占位(虽然,但是感觉并不太可取)。
要么就重构一下这里的逻辑,但后者就比较麻烦了。
@lyw405 这个看起来不应该是 Image 组件 src 不合法的时候,不渲染吗?
@lyw405 这个看起来不应该是 Image 组件 src 不合法的时候,不渲染吗?
不是不合法,准确来说是不存在。例如在源码中createElements的时候,搞个空字符串,此时底层Image会保错src不合法,但是不会中断整个g6的流程。 所以可以说是Image底层对src不存在的时候兜底处理不足,但是createElements时直接给Image传空的,多少感觉也有些问题。
@hustcc
尝试修改执行流程,把计算样式放到前面就可以正常的渲染和展开收缩的,可能是我哪里没考虑到。
这个问题现在解决了吗,我也遇到了这个问题=