echarts重绘遇到报错Uncaught TypeError: Cannot read properties of undefined (reading ‘type‘)

echarts在窗口大小发生变化后进行重绘出现的问题。

问题截图:
在这里插入图片描述

Vue 3 默认使用 Proxy + Reflect 来创建响应式对象(通过 reactive()),这种代理机制对大多数情况是透明的。然而:

ECharts 等第三方库并不知道这个 Proxy 的存在。它们可能直接操作了对象的原型、使用 Object.keys()、JSON.stringify() 或其他非 Proxy 友好的方式访问对象。

这会导致:

获取不到正确的数据;
在 resize、update 图表等时候报错;
出现“cannot read property of undefined”类错误。

解决方法:

1、在组合式中使用 markRaw 标记不要被响应式处理的对象
import {  markRaw } from 'vue';
state.chart = markRaw(echarts.init(el)); // 避免被 proxy
2、在选项式中,不在data里return,直接挂在this上
  data() {
    	return {
      		option: null // 只保留 option,移除 myChart
   		}
  },
  methods: {
    	initChart() {
     		this.myChart = echarts.init(this.$refs.chartDom); // 直接挂在 this 上	
   		},
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值