Vue3+echarts5踩坑,resize方法报错

博客讲述了在Vue3项目中使用Echarts进行数据统计可视化时遇到的问题,由于Vue3的proxy特性导致Echarts无法获取内部变量,从而在调用resize方法时出错。解决方案是避免在data中定义chart,或者改用shallowRef。博主通过官方issues找到解决方法,并分享了代码实现,包括初始化图表和监听窗口尺寸变化以重绘图表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目要做一个数据统计可视化的模块,按照官网做法调用resize方法时报错:
Wj2utK.png
卡了一整天,最后在官方issues上找到了原因,记录一下。
原因:Vue3使用了proxy,Echarts无法从中获取内部变量
解决方法:不要在data中定义chart,或者使用shallowRef

mounted() {
            // 注:图表不能放进data,vue3使用proxy,echarts无法从中获取变量
            let charts = [
                { id: 'yearChart', chart: null, options: yearOption },
                { id: 'monthChart', chart: null, options: monthOption }
            ]

            // 使用刚指定的配置项和数据显示图表。
            this.$nextTick(() => {
                this.charts.forEach(p => {
                    p.chart = echarts.init(document.getElementById(p.id));
                    p.chart.setOption(p.options);
                })
            })

            // 监听窗口变化,重绘图表
            window.addEventListener("resize", (() => {
                this.charts.forEach(p => {
                    setTimeout(() => { // 避免多图同时加载卡顿
                        p.chart.resize();
                    }, 200)
                })
            }));
        },

参考:官方issues

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值