Vue使用Echarts图表多次初始化报错问题的解决方法

作者:兰儿兰上天太阳肩并肩 时间:2023-07-02 16:49:54 

问题

Vue项目中需要用Echarts的柱状图显示数据,并且每次搜索要更新柱状图。

Vue使用Echarts图表多次初始化报错问题的解决方法

这时候小编发现在控制台会出现这样的报错:

Vue使用Echarts图表多次初始化报错问题的解决方法

原来的代码是这样的,页面挂载和搜索时都会调用init方法

initChart (dataSet = [5, 20, 36, 10, 10, 20]) {
     this.barChart = echarts.init(this.$refs.chartBox)
     const option = {
       title: {
         text: 'ECharts 入门示例'
       },
       tooltip: {},
       legend: {
         data: ['销量']
       },
       xAxis: {
         data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
       },
       yAxis: {},
       series: [
         {
           name: '销量',
           type: 'bar',
           data: dataSet
         }
       ]
     }
     this.barChart.setOption(option)

方法一 销毁实例

在initChart()内第一行打印 console.log(this.barChart),发现页面挂载的时候输出是:

Vue使用Echarts图表多次初始化报错问题的解决方法

点击搜索按钮,触发第二次初始化是输出是:

Vue使用Echarts图表多次初始化报错问题的解决方法

因此考虑在每次初始化echarts实例之前销毁已经存在的实例:

initChart (dataSet = [5, 20, 36, 10, 10, 20]) {
     if (this.barChart) {
       this.barChart.dispose()
       this.barChart = null
     }
     this.barChart = echarts.init(this.$refs.chartBox)
     const option = {
       title: {
         text: 'ECharts 入门示例'
       },
       tooltip: {},
       legend: {
         data: ['销量']
       },
       xAxis: {
         data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
       },
       yAxis: {},
       series: [
         {
           name: '销量',
           type: 'bar',
           data: dataSet
         }
       ]
     }
     this.barChart.setOption(option)
   }

方法二 不要频繁创建实例

再找解决办法的过程中,小编发现更新数据用setOption就可以,不必频繁创建echarts实例。真是愚蠢的小编。

handleSubmit () {
     this.barChart.setOption({ series: [{ data: [12, 12, 36, 12, 12, 12] }] })
   }

虽然setOption可以在这种场景规避多次实例化,但是有一种场景:当vue的页面切换时echarts实例的dom容器元素被销毁又重新创建了,echarts会因为找不到容器元素而报错。

这种场景可以在init前dispose实例。

之后有时间小编试试重现容器元素重新创建引发问题的这种场景。

来源:https://juejin.cn/post/7094542841220694046

标签:echarts,图表,初始化
0
投稿

猜你喜欢

  • 对变量赋值的理解--Pyton中让两个值互换的实现方法

    2022-07-05 02:51:56
  • python 爬取壁纸网站的示例

    2022-07-10 13:29:54
  • 一些相见恨晚的 JavaScript 技巧

    2024-04-18 10:10:53
  • javascript json字符串到json对象转义问题

    2023-07-02 05:18:22
  • 详解Python异常处理中的Finally else的功能

    2023-08-19 01:01:20
  • pandas实现按照多列排序-ascending

    2021-06-11 03:24:22
  • pycharm第三方库安装失败的问题及解决经验分享

    2023-07-11 01:50:45
  • 一文掌握Go语言并发编程必备的Mutex互斥锁

    2024-05-13 10:43:30
  • win10上如何安装mysql5.7.16(解压缩版)

    2024-01-23 23:22:53
  • Python利用networkx画图绘制Les Misérables人物关系

    2021-03-31 07:41:54
  • 网页设计之文字的辨识度与可读性

    2007-10-26 16:19:00
  • 细品Dreamweaver MX 2004内建FW技术

    2010-09-02 12:38:00
  • Go语言Http Server框架实现一个简单的httpServer

    2024-02-19 11:04:33
  • JS中把函数作为另一函数的参数传递方法(总结)

    2024-05-05 09:14:39
  • smarty简单分页的实现方法

    2023-11-21 08:59:48
  • Python环境Pillow( PIL )图像处理工具使用解析

    2022-12-08 16:04:48
  • MySQL索引类型一览 让MySQL高效运行起来

    2010-04-22 16:52:00
  • Python调用高德API实现批量地址转经纬度并写入表格的功能

    2023-12-26 03:22:20
  • 如何利用SQL Server 2005中的模板参数

    2009-01-23 15:02:00
  • SQL注入宽字节注入由浅到深学习

    2023-06-14 04:16:40
  • asp之家 网络编程 m.aspxhome.com