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


猜你喜欢
- K折交叉交叉验证的过程如下以200条数据,十折交叉验证为例子,十折也就是将数据分成10组,进行10组训练,每组用于测试的数据为:数据总条数/
- 第一种方式:将用户名和密码封装在Properties类中首先,导入数据库连接包这个是毋庸置疑的。创建一个jdbc驱动dirver。将数据库(
- Python字典的创建方法一:>>> blank_dict = {}>>> product_dict =
- 一、前言在Python中,除了可以自定义模块外,还可以引用其他模块,主要包括使用标准库和第三方模块。下面分别进行介绍。二、导入和使用标准模块
- @using@using 指令用于向生成的视图添加 C# using 指令:@using System.IO@{
- 本文实例讲述了Python读取sqlite数据库文件的方法。分享给大家供大家参考,具体如下:import sqlite3这是Python内置
- 在Web开发中,JavaScript的一个很重要的作用就是对DOM进行操作,可你知道么?对DOM的操作是非常昂贵的,因为这会导致浏览器执行回
- 1. 介绍上传的图片文件:如pic = request.FILES["picture"]# pic是 <class
- GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标
- substr --- 取得部份字符串 语法 : string substr (string string, int start [, int
- 投影变换(仿射变换)在数学中,线性变换是将一个向量空间映射到另一个向量空间的函数,通常由矩阵实现。如果映射保留向量加法和标量乘法,则映射被认
- 作为一个标准的程序猿,为程序编写说明文档是一步必不可少的工作,如何才能写的又好又快呢,下面我们就来详细探讨下吧。今天将告诉大家一个简单平时只
- set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- =====================
- keras提供简单方便的模型可视化工具,只需一行代码就可以用框图的形式可视化出你搭建的网络结构。对于复杂网络而言,这个工具就是个神器呀。这篇
- ctrl + r => 输入drivers回车 => etc/hosts , 用记事本打开它,在 127.0.0.1 local
- 一、功能需求1.根据输入内容进行模糊查询,选择地址后在地图上插上标记,并更新经纬度坐标显示2.在地图点击后,根据回传的左边更新地址信息和坐标
- python基础pandas的drop()用法做数据处理得时候用到了pandas,体验不错,记录如下:import pandas as pd
- Ruby Marshal序列化Marshal是Ruby的核心库,可以将一些对象以二进制的方式序列化保存到文件中,需要时再从文件中加载重新构建
- 第一种方法:md5.New() 和 Writepackage mainimport ( "cr
- jQuery获取Select选择的Text和Value: $("#select_id").change(function