vue3封装echarts组件数据更新不同步问题

vue3封装echarts组件数据更新不同步问题

背景:

​ 记录一下项目中遇到的bug,在vue3+echarts环境下,为了方便使用,我将echarts封装成组件使用,使用的时候只需要把对应的值传入给chart组件就行,但是在传入真实数据的时候遇到了问题,就是传入value值与图表组件显示的数值不一致。(如图)

image-20230710144057583


原因分析:

​ 一开始就想到是元素生成的时候,props值的改变没有跟上,于是图表就没有动态的更新上,基于这点展开排查;

​ 原来:在组件中,defineProps接收了传入的参数本身是个代理类型的对象(Proxy),他是响应式的,但是,由于我在曲线图配置选项的option中,是通过,props.value来获取到他的部分属性,这个时候option对象就失去了响应式;


解决方法:

​ 在组件中添加监听方法,watch(props.value,()=>{....}) 在回调方法中修改option选项的data值,就能够解决数据不同步刷新问题;

出乎意料的发现:

​ 在排查过程中,发现,如果对于option的data属性我直接这样赋值:

​ data:[ props ],

数据的动态同步也能够实现!

我猜测估计是赋值的时候,如果是一个代理对象(Proxy),name他会默认选中字段中的名字为value的属性进行赋值,就类似 props.value!!

​ 通过更改defineProps中定义的属性名字,以及设置多个同为number类型的参数,发现,在 data:[ props ] 的情况下,系统会自动将其中名字为value的值注入!!

posted @   devynlime  阅读(972)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示