报错 Uncaught (in promise) Error: Initialize failed: invalid dom.
意思是初始化失败,DOM 无效 ,是因为 ECharts 尝试获取的 DOM 元素不存在
DOM 加载时机问题:
在 onMounted 钩子函数之外调用 document.getElementById ,此时 Vue 组件可能还未完全渲染到 DOM 树中,对应的 pie - chart 元素还不存在,就去获取它,导致获取失败。
注意:echart一定要放在 onmounted里面!!
确保 DOM 元素存在:在 Vue 组件渲染过程中,模板中的 DOM 元素需要一定时间才能被真正创建并挂载到页面 DOM 树中。 echarts.init 方法需要传入一个已存在的 DOM 元素作为容器来初始化图表。如果在组件还未挂载完成时(即 DOM 元素还不存在 )就调用 echarts.init ,会出现 Initialize failed: invalid dom. 这样的错误,导致图表无法正常初始化。而 onMounted 钩子函数会在组件挂载完成后被调用,此时组件内的 DOM 元素已创建好,能保证 document.getElementById 可以正确获取到对应的图表容器元素,进而顺利初始化 ECharts 图表。
在 Vue 组件中,onMounted
钩子函数确保组件挂载到 DOM 后执行代码。但如果 ECharts 初始化代码在 DOM 元素渲染前就执行,仍可能获取不到元素。你可以将 ECharts 初始化代码放在 onMounted
中
如果 页面没有多个echarts图要绘制 要把newmychart注释掉 否则页面会获取不到这个错误
导致el-table没法显示
// 基于准备好的dom,初始化echarts实例
const myChart = echarts.init(document.getElementById('pie - chart'));
// const newMyChart = echarts.init(document.getElementById('new-pie - chart'));
// 配置项
const option = {
title: {
text: '国际社会对台支持情况',
subtext: '',
left: 'center'
},
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: 'left'
},
series: [
{
name: '比例',
type: 'pie',
radius: '50%',
data: [
{ value: 33.2, name: '支持' },
{ value: 38.1, name: '中立' },
{ value: 28.7, name: '反对' }
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
// 使用刚指定的配置项和数据显示图表
myChart.setOption(option);
// newMyChart.setOption(option);