Vue使用Echarts图表多次初始化报错问题的解决方法
作者:兰儿兰上天太阳肩并肩 时间:2023-07-02 16:49:54
问题
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),发现页面挂载的时候输出是:
点击搜索按钮,触发第二次初始化是输出是:
因此考虑在每次初始化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