vue3封装echarts组件数据更新不同步问题
1.v-if二次渲染失效问题
2.vue3封装echarts组件数据更新不同步问题
vue3封装echarts组件数据更新不同步问题
背景:
记录一下项目中遇到的bug,在vue3+echarts环境下,为了方便使用,我将echarts封装成组件使用,使用的时候只需要把对应的值传入给chart组件就行,但是在传入真实数据的时候遇到了问题,就是传入value值与图表组件显示的数值不一致。(如图)
原因分析:
一开始就想到是元素生成的时候,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的值注入!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY