使用echarts报错Error: Initialize failed: invalid dom. 解决方法及详解

错误案例一
报错信息:在这里插入图片描述
在这里插入图片描述

父组件中:
<echartsLine :id="numLine" v-if="numData" :lineData="numData"></echartsLine>
子组件中:
  <div :id="id" :style="`width:${width};height:${height}`"></div>

解决办法 :父组件传id必须在双引号内加单引号,让值成为string类型,子组件才能正确接收

正确示例:
<echartsLine :id="'numLine"' v-if="numData" :lineData="numData"></echartsLine>

错误案例二
报错信息:在这里插入图片描述

created () {
    this.getOptions()
  },
  
 methods: {
    getOptions () {
      var chartDom = document.getElementById(this.id)
      var myChart = echarts.init(chartDom)
      var option

      option = {
        xAxis: {
          type: 'category',
          data: this.lineData[0]
        },
        yAxis: {
          type: 'value'
        },
        series: [{
          data: this.lineData[1],
          type: 'line',
          smooth: true
        }]
      };

      option && myChart.setOption(option);
    }
  }

出现问题的原因: created 中元素还未挂载到页面,此时操作DOM则会报错.具体参考:https://cn.vuejs.org/v2/api/#created

解决办法:在mounted中调用操作元素方法,当页面执行到mounted时,此时该页面所有元素都已经挂载完成(不会保证所有的子组件也一起被挂载) 具体参考:https://cn.vuejs.org/v2/api/#mounted

正确实例
mounted () {
  this.getOptions()
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值