在Vue项目里遇到多次渲染echart组件只显示一个的问题

达里尔
• 阅读 962

症状

  • vue项目 echarts中出现“There is a chart instance already initialized on the dom.”的警告
  • Vue页面多次渲染echarts封装的组件但只出现一个(如果这个为主要症状)

原因:

  1. 有可能是id冲突,如果你注册了N个组件,但是由于是复制粘贴过来的,导致你所有的组件文件echarts容器的id都是相同的,所以导致只渲染第一个echarts组件
  2. this.$refs未获取到dom元素
<div id="myChart" ref="myChart" style="width: 100%; height: 100%" />
// const myChart = echarts.init(document.getElementById('myChart'))
const myChart = echarts.init(this.$refs.myChart)

::: tip 这块尽量用 const myChart = echarts.init(this.$refs.myChart) 这种方式来初始化图表,解决id重复问题导致的只渲染第一个echarts图表组件 ::: 如果this.$refs.myChart没有获取到dom元素有可能是加载上出了问题,因为created生命周期里和watch监听里是获取不到this.$refs这种方式的dom元素的,可以用$nextTick来获取

this.$nextTick(()=>{
  this.$refs.bar.myChart(data)
})
点赞
收藏
评论区
推荐文章
晴空闲云 晴空闲云
2年前
vue3中基于script setup语法糖的$refs使用
在用vue3开发项目的时候,需要调用子组件的方法,于是想着用$refs来实现,但是我是使用scriptsetup语法糖,原先vue2的语法已经不适用了。于是一番折腾和查阅资料,终于搞定。vue2语法vue2语法在组件上设置ref属性后,在代码里可以通过this.$refs.ref值访问到对应的子组件。一个设置ref值的组件:html在js代码中可以通
Easter79 Easter79
3年前
vue + echart 实现中国地图 和 省市地图(可切换省份)
一.中国地图1.先导入echarts,然后再main.js里引入echarts//引入echartsimportechartsfrom'echarts'Vue.prototype.$echartsecharts//还要特别引入china.json,这样中国地图才会出现,不然只会出现右下角的南海诸岛importchinafr
Chase620 Chase620
3年前
Vue面试考点准备02
10\.谈谈你对keepalive的理解是什么?keepalive是Vue提供的一个抽象组件,用来对组件进行缓存,当组件切换时不会进行销毁,从而节省性能。由于是一个抽象组件,所以在页面渲染完毕后不会被渲染成一个DOM元素。1)include定义缓存白名单,keepalive会缓存命中的组件;2)exclude定义缓存黑名单
Easter79 Easter79
3年前
VUE+ElementUI布局随笔
1.elcontainer标签非必须。2.每一个vue文件中,所有的html代码都应该写在同一个dom中,否则会报错。3.elaside默认宽度为300px,可以通过在标签中修改width属性来调整。4.若routerview想通过name属性来指定渲染的组件,则在router.js中,该组件在注册时,必须是component
Stella981 Stella981
3年前
NoDom和Vue的区别
看到有朋友在问NoDom和Vue的区别,我在这里做一个较完整的回复,只能是较完整,因为我对Vue及其源码了解并不深刻。1、框架组成而言,NoDom强调模块,NoDom整个App就是一个大模块;Vue强调组件,它是把组件装到App中,而组件(component)和插件(plugin)往往会被很多开发者混淆;2、框架的核心性能在于编译和渲染,Vue的编译
linbojue linbojue
8个月前
Vue3+Nuxt3打造SSR网站应用,0到1实现服务端渲染
Vue3Nuxt3打造SSR网站应用,0到1实现服务端渲染download》shanxueit.com/364/项目介绍项目名称:基于Vue3ViteTS的elementplus业务组件二次封装一、项目背景和目标随着前端技术的不断发展,Vue3、Vi
达里尔 达里尔
1个月前
vue3 组件切换监听不到onMounted
用vue3的时候有时候会遇到需要监听组件vif,如果遇到组件切换的时候onMounted钩子函数不触发,那么就用onUpdated这个钩子函数vueonUpdated(()//如果需要一个方法在每次vif切换组件的时候需要每次都触发,但是写在onMount
达里尔
达里尔
Lv1
大部分都是自己工作中遇到的问题,懒得用脑子记就写下来,主要是给自己看的,遇到的时候直接复制粘贴,如果对他人有帮助的话就更好了
文章
32
粉丝
3
获赞
13