ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

解决echarts警告提示:There is a chart instance already initialized on the dom.

解决echarts警告提示:There is a chart instance already initialized on the dom.

1、分析原因

主要是因为,我把echats图表的代码封装成一个方法,在页面中多次调用,而页面中创建的dom节点都是同一个,每次运行都会init一个echarts实例,所有就会出现上面的警告信息

2、解决方法

使用echarts.getInstanceByDom() 方法判断是否已经存在echarts实例,如果有则不创建,如果没有就进行创建

注意,注册在vue的 prototype上并用echarts表示,所以直接使用this.$echarts表示

getChart(el) { const dom = document.getElementById(el); if (!dom) return console.error('Dom不存在'); // dom不存在直接退出 let myChart = this.$echarts.getInstanceByDom(dom); //防止重复多次创建异常图表 if (!myChart) { myChart = this.$echarts.init(dom); } let _config = this.optionChart(data); myChart.clear();//清画面内容 myChart.resize();//重新适配容器大小 myChart.setOption(_config ); },
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进