Vue Echarts报错Initialize failed: invalid dom.

在这里插入图片描述

报错原因

dom还没挂载完成,echarts.init() 就已经开始执行

解决方法

1、不要用created(用mounted),created这时候还只是创建了实例,但模板还没挂载完成

  • created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图
  • mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作

也就是说created()方法是在页面加载前调用,此时dom还未加载。所以当 有改变dom的时候用mounted, 没有改变dom操作就用created

2、使用create情况下使用延迟加载

(1)setTimeout延迟加载

setTimeout()方法用于在指定毫秒数后调用

通过延迟加载getChart()方法,使DOM先于getChart方法加载,为DOM加载提供时间

在这里插入图片描述
(2)使用nextTick延迟加载

  created() {
    this.$nextTick(()=>{
      this.getchart();
    })
  },

3、用mounted还是会报错
最近发现有些友友用了mounted还是会报错,有查了查解决办法,发现有博主说可以将document.getElementId获取dom换为使用ref指向dom元素

<template>
  <!--1.设置DOM容器-->
  <div id="Charts" ref="Echarts" ></div>
</template>
<script>
//2.引入echartjs
import * as echarts from "echarts";

export default {
  name: "chart",
  created() {
    setTimeout(() => {
      this.getChart()
    }, 1000);
  },
  methods:{
    getChart(){
      // 3.定义图标对象myChart,初始化echarts实例
      let myChart=echarts.init(this.$refs.Echarts)

      // 4.添加配置项
      let options={
        title: {  //标题
          text: 'ECharts 入门示例',  //主标题文本
          left:150,
          top:10,
        },
        tooltip: {},
        xAxis: {  //配置要在 X 轴显示的项:
          data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
        },
        yAxis: {},  //配置要在 Y 轴显示的项:
        series: [
          {
            name: '销量',
            type: 'bar', 
            data: [
              {"value":"5","date":"2022-4-8"},
              {"value":"8","date":"2023-4-8"},
            ],
          }
        ]
      }
      // 5.将配置给myChart
      myChart.setOption(options)
    }
  }

}
</script>

<style scoped>
#Charts{
  width: 500px;
  height: 500px;
  border: 1px solid red;
}
</style>
  • 13
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
在提供的引用内容中,通过调用`echarts.init(this.$refs.Echarts)`来初始化echarts实例。然而,报错信息显示初始化失败,原因是无效的dom。 为了解决这个问题,你可以检查以下几个方面: 1. 确保在Vue组件的`<template>`标签中,正确地设置了DOM容器:`<div id="Charts" ref="Echarts"></div>`。这里使用了`ref`属性来指向DOM元素。 2. 在Vue组件的`<script>`标签中,引入了echarts库,并确保`import * as echarts from "echarts";`语句正确导入了echarts。 3. 确保在`getChart`方法中,使用正确的`ref`指向DOM元素来初始化echarts实例。例如,使用`let myChart = echarts.init(this.$refs.Echarts)`。 4. 检查DOM元素是否正确设置了宽度和高度,以确保图表能够正确显示。可以在`<style scoped>`标签中设置CSS样式,如`#Charts{ width: 500px; height: 500px; }`。 如果以上步骤都正确无误,那么初始化echarts实例的报错问题就应该得到解决了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [echarts报错Initialize failed: invalid dom./There is a chart instance already initialized on the dom.](https://blog.csdn.net/Guoyu1_/article/details/128125851)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Vue Echarts报错Initialize failed: invalid dom.](https://blog.csdn.net/weixin_52418790/article/details/123690752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麻辣翅尖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值